java.lang.ClassNotFoundException beim Ausführen von java -jar
Ich benutze Ameise, um meine zu bauenbuild.xml
Datei kompiliert es ok, bekommt dann aber eine Laufzeitjava.lang.NoClassDefFoundError
beim Laufenlassen des resultierenden Glases über "java -jar my_jar.jar
". Es scheint, als würde dies viel auftauchen, aber keine der Lösungen der verwandten Fragen hat für mich funktioniert.
Mein Klassenpfad fürjavac
enthält nur "/usr/local/lib/libthrift.jar
"und die Haupt.java
Datei importiert eine Reihe von Sparsamkeitspaketen wieorg.apache.thrift.transport.TTransportException
.
Wenn ich versuche, das Programm auszuführen, über:
java -jar MyClass.jar
Ich bekomme den Fehler:
Exception in thread "main" **java.lang.NoClassDefFoundError**: org/apache/thrift/transport/TTransportException
Caused by: java.lang.ClassNotFoundException: org.apache.thrift.transport.TTransportException
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: **MyClass**. Program will exit.
Hier sind die Dinge, die ich bisher ausprobiert habe und die nicht funktionieren:
Hinzufügen eines Flags in der Befehlszeile wie "Java-cp /usr/local/lib/libthrift.jar
-jar my_jar.jar
", das Ergebnis ist derselbe Fehler wie oben
Hinzufügen<attribute name="Class-Path" value="./:/usr/local/lib/libthrift.jar"/>
in meinem Glasmanifest>
Tag, das Ergebnis ist der gleiche Fehler wie oben
Hinzufügen-Xbootclasspath/a:/usr/local/lib/libthrift.jar:./
auf die Java-Befehlszeile. Es behebt den ersten Fehler, aber es tritt ein anderer Fehler auf:
Ausnahme im Thread "main" java.lang.NoClassDefFoundError: org / apache / log4j / Logger bei org.apache.thrift.transport.TServerSocket. <Clinit> (TServerSocket.java:36) bei MyClass.start (Unknown Source) bei MyClass .main (Unbekannte Quelle)
BEARBEITEN:
Wenn ich den Code auskommentiere, der die fehlenden Klassen instanziiert, aber die Importe belässt, wird der Code einwandfrei ausgeführt.
BEARBEITEN:
Ich habe meine Java-Klassen auf einen Server verschoben und die MainClass mit dem Server im Manifest-Attribut referenziert, aber das hat nichts behoben.