我使用ant來構建我的build.xml
文件,它編譯正常,但在通過「java -jar my_jar.jar
」運行生成的jar時得到運行時java.lang.NoClassDefFoundError
。這似乎很多,但沒有任何相關問題的解決方案爲我工作。當運行java -jar(仍未解決)時發生java.lang.ClassNotFoundException
我的類路徑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例外:組織/阿帕奇/ log4j的/記錄器 在org.apache.thrift.transport.TServerSocket。 <clinit>(TServerSocket.java:36) 在MyClass.start(來源不明) 在MyClass.main(來源不明)
您的幫助表示讚賞!謝謝。
編輯:
如果我註釋掉實例缺少類的代碼,但離開進口,代碼執行罰款。
編輯:
我感動我的Java類的服務器,並在清單屬性與服務器所引用的MainClass,但沒有任何修復。
剛剛在我的答案中添加了MANIFEST的Class-Path部分。我剛剛看到詹姆斯B的回答,所以如果這項工作,你可以選擇他的答案作爲官方的答案。 – VonC 2009-11-25 09:23:26