# Jar-Files mit Swt(zuerst SWT+gcj = ??)



## ttplayer (29. Okt 2009)

Hallo,
ich will ein SWT-Programm mit dem GCJ kompilieren und hab im Netz 3 verschiedene Lösungsmöglichkeiten gefunden:
1.
_gcj --main=Test1 -o Test1.exe -B swt.jar Test1.java_
->dann gibt er überall, wo ich SWT verwende, Fehler aus;(
2.
zuerst die java-Datei mit der SWT.jar in eine *.o-Datei kompilieren -> funktioniert
dann die swt.jar in eine swt.so kompilieren -> da spuckt er jede Menge Fehlermeldungen aus (vielleicht stimmen die AWT-Versionen von SWT und der JRE nicht überein??)???:L
dann sollte man noch die .o-Datei mit der swt.so kompilieren (siehe Anleitung)
3.
_gcj --main=Test1 --classpath={...}\thisiscool-gcc\swt\win32\3218\swt.jar -o Test1.exe Test1.java -L{...}\thisiscool-gcc\swt\win32\3218 -lswt_
-> da hört er gar nicht mehr auf mit Fehlern, weil er irgendwie irgendwie die java-Syntax nicht zu kennen scheint... Wenn ich dann versuche, mit --classpath noch Java\jre\lib\resources.jar einzubinden, kennt er dafür SWT nicht mehr...

Weiß jemand zufällig etwas?


----------



## ttplayer (29. Okt 2009)

Nachtrag:
Mit der ersten Version kann ich immerhin aus einem leeren Programm eine .EXE erzeugen, die stürzt dann aber beim Öffnen ab...


----------



## maki (29. Okt 2009)

> Weiß jemand zufällig etwas?


Java Programme mit GCJ zu kompilieren ist schon prinzipiell falsch.
Sie werden dadurch nur langsamer, instabiler und sind dann nicht mehr Plattformunabhängig.


----------



## ttplayer (29. Okt 2009)

Und wie mache ich dann in der Kommandozeile .jar-Files?
PS: kann man Icons in JAR-Files einbinden?


----------



## maki (29. Okt 2009)

> Und wie mache ich dann in der Kommandozeile .jar-Files?


Dazu haben wir mehrere Einträge in der FAQ.



> PS: kann man Icons in JAR-Files einbinden?


Natürlich.


----------



## ttplayer (29. Okt 2009)

maki hat gesagt.:


> Dazu haben wir mehrere Einträge in der FAQ.
> 
> 
> Natürlich.


OK, werde mich gleich mal durchlesen.


----------



## ttplayer (29. Okt 2009)

Und auch ich habe wieder die Meldung:
Failed to load Main-Class manifest attribute from
Test1.jar
Aufruf:
jar -cfv Test1.jar Manifest.txt Test1.class

Inhalt von Manifest.txt:
Manifest-Version: 1.0
Main-Class: test1
Class-Path: swt.jar
//Leerzeile

??


----------



## musiKk (29. Okt 2009)

Die Angaben sind case sensitive.


----------



## ttplayer (29. Okt 2009)

Wenn ich den gesamten Pfad hinschreibe, funktioniert es auch nicht???:L


----------



## ttplayer (29. Okt 2009)

PS: In Eclipse hab ich schon mal eine JAR-Datei erstellt, die läuft, aber die ist nur bei mir unter Vista gelaufen, unter XP nicht...
PPS: Ist das normal, dass ich vom javac eine Test1$1.class-Datei krieg?


----------



## ttplayer (29. Okt 2009)

maki hat gesagt.:


> Natürlich.


Mit den Icons meine ich, dass die jar-Datei dann ein eigenes Bildchen hat, so wie bei EXEs mit Ressourcen


----------



## ttplayer (29. Okt 2009)

OK, die Main-class-Meldung kommt jetzt nicht mehr, jetzt hab ich den ganzen org.swt-ordner eingebunden mit:
jar -cvfm Test1.jar MManifest.txt -C ...\org\ . Test1.class

ps den org-Ordner habe ich aus der Jar-Datei, die ich mal unter Eclipse erstellt habe.
Leider schließt sich das Fenster gleich wieder, obwohl ich das sleep-und-dispose-Ritual da hinten hingemacht hab...

Nachtrag:
Nachdem ich jetzt noch die SWT-DLLs und Test1$1.class eingefügt hab, funktioniert alles wunderbar!:toll:


----------



## Wildcard (29. Okt 2009)

ttplayer hat gesagt.:


> Mit den Icons meine ich, dass die jar-Datei dann ein eigenes Bildchen hat, so wie bei EXEs mit Ressourcen



Liefer einfach einen Launcher für die entsprechende Plattform aus wenn du ein Icon haben willst, oder verwende Webstart.


----------



## ttplayer (29. Okt 2009)

Wildcard hat gesagt.:


> Liefer einfach einen Launcher für die entsprechende Plattform aus wenn du ein Icon haben willst, oder verwende Webstart.


Also eine EXE-Datei, die die JAR-Datei ausführt? Dann müsste ich halt immer 2 Dateien verschicken.


----------



## ttplayer (29. Okt 2009)

Korrektur:
Die erstellte JAR-Datei läuft nur bei mir, unter WinXP kommt immer noch der Main-class-Fehler, aber ich glaub des liegt daran, dass ich Icons verwende, die ich nicht eingebunden habe.


----------



## ttplayer (31. Okt 2009)

OK, es lag tatsächlich an den Icons, Lösung siehe in meinem anderen Thread


----------

