Ant manifest file

Hallo,

meine Frage ist wie folgt:
Ich habe ein ANT File geschrieben welches folgende Ordner-Struktur auswirft:

D:\Projekt
│ prgcli.jar
│ prggui.jar

├───bin
│ bibliotheken.jar

└───layouts
layout1.lli
layout1.lli
layout1.lli
layout1.lli

Das mache ich wie folgt:

Ich packe mittels

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.

Hallo

  1. Main methode kann nicht gefunden werden? Was steht genau als Fehler da?

2.) getClass().getResourceAsStream(„resources/layouts/layout1.lli“); // oder vielleicht ohne „resources“

mfg

die genaure fehlermeldung lautet :

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.

mfg

… Ich hab leider keine Ahnung - Seit Jahren nicht mehr angefasst. Frag weiter …

Hi,
http://netload.in/dateis6o35AzHd4/PAEKS.rar.htm

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.

danke dir schonmal vielmals

Hi,

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.:

  • Mein Ordner
  • GUI.jar
  • cli.jar
  • images
  • *.svg

mfg

Oh, hab die Änderung im build.xml nicht beschrieben:

und für cli:

Hey danke ersmtal für deine Antwort. Ich war leider zeitlich nicht am Rechner darum erst jetzt, sorry.

Eine Frage hab ich noch, das include bewirkt aber nur das die lib’ auch inder GUI.jar zB landen richtig?

Also kein Verweis auf bin/libraries.jar sondern ein doppeltes kopieren oder?

Weil die jars ja damit dann 18MB groß werden?!

Hi,

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.

mfg

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.

mfg