Я использую ant для создания моего файла build.xml
, он компилируется нормально, но затем получает среду выполнения java.lang.NoClassDefFoundError
при запуске полученного файла jar через «java -jar my_jar.jar
». Кажется, что это происходит много, но ни одно из решений связанных вопросов не помогло мне.
Мой путь к классам для javac
содержит только "/usr/local/lib/libthrift.jar
", а основной файл .java
импортирует кучу бережливых пакетов, таких как org.apache.thrift.transport.TTransportException
.
Когда я пытаюсь запустить программу через:
java -jar MyClass.jar
, получаю ошибку:
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.
Вот вещи, которые я пробовал до сих пор, но они не работают:
добавление флага в командную строку, например "java
-cp /usr/local/lib/libthrift.jar
-jar my_jar.jar
", результат - та же ошибка, что и вышедобавление
<attribute name="Class-Path" value="./:/usr/local/lib/libthrift.jar"/>
внутрь тегаmanifest>
моей банки приводит к той же ошибке, что и вышедобавление
-Xbootclasspath/a:/usr/local/lib/libthrift.jar:./
в командную строку Java. он решает первую ошибку, но появляется другая ошибка:Исключение в потоке «основной» java.lang.NoClassDefFoundError: org/apache/log4j/Logger в org.apache.thrift.transport.TServerSocket.‹clinit›(TServerSocket.java:36) в MyClass.start(неизвестный источник) в MyClass .main(неизвестный источник)
ИЗМЕНИТЬ:
Если я закомментирую код, который создает экземпляры отсутствующих классов, но оставлю импорт, код будет выполняться нормально.
ИЗМЕНИТЬ:
Я переместил свои классы Java на сервер и сослался на MainClass с сервером в атрибуте манифеста, но это ничего не исправило.