alle dateien aus meinem ursprünglichen ordner „lib“ zusammen , dann kopiere ich die nötigen layouts in den layout Ordner, und dann builde ich über 2 task die eigentlich ausführbare jar:
Nun habe ich 2 Fragen / Probleme:
Ich bekomme immernoch den Fehler das er die Main-Class nicht finden kann
und b) wie vermittle ich dem Programm das er bitte den Ordner layouts nun woanders suchen soll
Also das vorher sieht der Ordner ja aus wie :
bin
lib
ressources
src
Und irgendwo unterhalb von ressources is da eigentlich der ordner „layouts“.
Also Bilder die in die Applikation eingebunden werden, sind weiterhin in der prggui.jar aber die layout-dateien halt nicht mehr.
ich hoffe das Problem ist verständlich genug ^^°
Vielen Dank.
Exception in thread „main“ java.lang.NoClassDefFoundError: prggui/jar
Caused by: java.lang.ClassNotFoundException: prggui.jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: prggui.jar. Program will exit.
Der Pfad der main-class ist aber sehr sicher richtig.
Im Quellcode beziehe ich mich zB auf eine zu ladende lli Datei :
getClass().getResource("/locations/layouts/"+lliName+".lli").getFile());
Jedoch ist ja die lli-Datei NICHT innerhalb einer jar Datei , sondern liegt frei im Verzeichniss (damit der Anwender selbständig lli’s hinzufügen kann)
Wie „sage“ ich das denn der jar datei, bzw dem Programm, das er die llis nicht innerhalb der jar suchen muss sondern unter „rootDir/layouts/“
Wenn du kein „geheimes“ Projekt machst, dann schick mir das ganze Projekt als zip datei (lade es irgendwo hoch). Dann kann ich am einfachsten die ant Datei korrigieren und notfalls kommentare dazufügen.
Es ist kein geheimes Projekt, aber da es eine Konkurenz Gruppe gibt habe ich nicht alle Details und so gepostet.
Es soll so fertig gestellt werden:
Es sollen 2 jars existieren, eine für gui und eine für cli, sowie eine jar mit den ganzen Libs.
Die dateien aus ressources sollen in den jars enthalten sein, !! bis auf die .svg Dateien. Die sollen offen als Ordner vorhanden sein , damit der benutzer bei bedarf selber welche hinzufügen kann.
du packst ja relativ viel in die GUI/cli.jar hinein, ist das wirklich so gewollt?
Die Zeilen die du vergessen hast, waren die libraries.jar in die GUI/cli.jar einzubinden, das habe ich gemacht.
Aber wenn die *.svg’s in einen separaten Ordner liegen sollen, damit sie der User austauschen kann, dann musst in deinem Programm die *.svg’s anders ausglesen, z.b. vom basedir des jar files ausgehen, und nicht vom *.jar file selber.
Führe ich das Projekt im Eclipse aus geht es weil im PAEKS\bin\locations\svg die Dateien liegen, im jar file aber nicht (da du sie austauschbar haben willst).
–> Ordner im Programm festlegen in dem die jar files liegen sollen, z.b.:
ja. Somit kannst du die GUI/cli.jar auch von anderen Ordnern aus ausführen. Du kannst die GUI/cli.jar auch mit winzip/winrar/7zip/wasauchimmer öffnen und reinschauen. Das jar bedeutet nur java archive und ist somit nichts anderes als ein komrimierter Ordner.
Aber dann ist es ja sinnlos die libraries extra zu packen oder?
Wäre es dann nicht besser wenn man nur auf die libraries.jar verweisen könnte? (wenn das geht?)
Ja, leg einfach die libraries (bei libraries.jar bin ich mir nicht sicher, ich meine die einzelnen *.jar’s) in den gleichen Ordner wie die GUI/cli.jar. Oder definiere einen „java classpath“ (googlen!) wo java nach den fehlenden Klassen suchen soll.