Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
aktuell versuche ich ein Maven2-Projekt, das ich erstellt habe, zu einem "Standalone"-Jar zu machen.
Ich habe dort aber einige Dependencies genutzt (hsqldb-2.2.6, junit4.9, log4j-1.2.14). Wenn ich das nun zu einer JAR exportier (maven: clean, comnpile, package) und dann versuche auszuführen bekomme ich folgenden Fehler:
Code:
$ java -jar target/MEINESOFTWARE.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/xml/DOMConfigurator
at Log.Log.<init>(Log.java:39)
at Log.Log.getLog(Log.java:154)
at Persistence.Persistence.<init>(Persistence.java:50)
at Persistence.Persistence.getPersistence(Persistence.java:284)
at Start.main(Start.java:28)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.xml.DOMConfigurator
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)
... 5 more
Es sieht für mich so aus, als würden die Dependencies nicht mit gepackt... Im JAR-File ist da auch nichts drin...
Im Gegensatz zu Ears oder Wars unterstützt das Jar-Format es nicht, andere Jars mit reinzupacken. Darüber stolpert man gerne, wenn man vorher nur mit ears oder wars gearbeitet hat. Es gibt für dieses Problem zwei mögliche Lösungen:
Entpacke alle dependencies und schmeiß alles in einem Riesen-Jar zusammen.
Richte Dir eine Ordnerstruktur ein (bspw Programmverzeichnis mit Unterverzeichnis "lib") und liefere Deine anwendung als Zip-Datei aus.
Jetzt packt er mir das Programm nahezu richtig zusammen.
Ich habe jetzt einzig das Problem, dass er mir einige Ordner nicht mit packt. Ich habe einen Ordner, der die Sprachdateien des Projekts und einen, der die Bilder des UI enthält.
Ich habe schon versucht diese dem classpath mit hinzuzufügen, aber auch das bringt nichts (hab ich mir aber auch fast gedacht). Wenn ich die Ordner von Hand einfüge funktioniert das. Das sollte ja aber nicht der richtige Weg sein, oder?
@kama ja, ist mir ein Begriff, nur da das nicht funktioniert hat, habe ich gedacht, ich probier erstmal alles was vieleicht Sinn ergeben könnte
Ich habe jetzt einzig das Problem, dass er mir einige Ordner nicht mit packt. Ich habe einen Ordner, der die Sprachdateien des Projekts und einen, der die Bilder des UI enthält.
ich habe jetzt (fast) alles versucht... ich hab sie im Ordner src/main/resources gehabt, im Ordner src/main/resources/img, hab diese dem classpath hinzugefügt etc.
ich rufe die Bilder per
Java:
logo = new JLabel(new ImageIcon("logo.png"));
Das Einzige, was funktionierte war, wenn ich die mit
Java:
logo = new JLabel(new ImageIcon("src/main/resources/img/logo.png"));
abgerufen habe, wurden sie beim start direkt aus eclipse angezeigt. Nach dem package waren sie zwar in dem jar-file, wurden aber nicht angezeigt.
Da ist man schon so in dem Trott, dass man doch glatt in allen Anleitungen den führenden Slash übersieht ... Und ich wunder mich, dass ich so komische Fehlermeldungen bekomme -.-