java.lang.ClassNotFoundException podczas uruchamiania java -jar
Używam mrówki do budowania mojegobuild.xml
plik, kompiluje się dobrze, ale potem uzyskuje środowisko wykonawczejava.lang.NoClassDefFoundError
podczas uruchamiania wynikowego słoika przez „java -jar my_jar.jar
„. Wygląda na to, że pojawia się dużo, ale żadne z powiązanych pytań nie zadziałało dla mnie.
Moja ścieżka klasy dlajavac
zawiera tylko „/usr/local/lib/libthrift.jar
„i główny.java
plik importuje kilka pakietów oszczędnościowych, takich jakorg.apache.thrift.transport.TTransportException
.
Kiedy próbuję uruchomić program przez:
java -jar MyClass.jar
, Dostaję błąd:
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.
Oto rzeczy, które dotychczas wypróbowałem i które nie działają:
dodanie flagi w linii poleceń, np. „java-cp /usr/local/lib/libthrift.jar
-jar my_jar.jar
„wynikiem jest ten sam błąd, co powyżej
dodawanie<attribute name="Class-Path" value="./:/usr/local/lib/libthrift.jar"/>
wewnątrz mojego słoikamanifest>
tag, wynikiem jest ten sam błąd co powyżej
dodawanie-Xbootclasspath/a:/usr/local/lib/libthrift.jar:./
do wiersza poleceń java. rozwiązuje pierwszy błąd, ale pojawia się inny błąd:
Wyjątek w wątku „main” java.lang.NoClassDefFoundError: org / apache / log4j / Logger w org.apache.thrift.transport.TServerSocket. <clinit> (TServerSocket.java:36) w MyClass.start (Nieznane źródło) w MyClass .main (nieznane źródło)
EDYTOWAĆ:
Jeśli skomentuję kod, który tworzy instancję brakujących klas, ale zostawiam import, kod działa poprawnie.
EDYTOWAĆ:
Przeniosłem moje klasy java na serwer i odwołałem się do MainClass z serwerem w atrybucie manifestu, ale to niczego nie poprawiło.