![](/img/trans.png)
[英]NoClassDefFoundError: Tomcat 7 unable to load classes from jar
[英]Unable load jar from my jar: NoClassDefFoundError
我有這個罐子:
/weekly/
/database.class
/report.class
/META-INF
/MANIFEST.MF
清單文件
Manifest-Version: 1.0
Main-Class: weekly.report
Class-Path: /root/java
在這個jar中,我使用了兩個外部jar文件,分別是postgresql-9.1-901.jdbc4.jar,javax.mail.jar。 我也將它們放到/root/java
。
但是當我運行它時
java -jar weekly.jar
它表明這兩個罐子類找不到
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/internet/AddressException
Caused by: java.lang.ClassNotFoundException: javax.mail.internet.AddressException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
甚至我嘗試將這兩個罐子放到我的$ CLASSPATH中
/usr/java/jdk1.6.0_21/lib:/usr/java/jdk1.6.0_21/jre/lib
它還顯示相同的錯誤結果。 我可以在Mac上成功運行它,但是當我嘗試將其刪除到服務器CentOS系統上時,它會顯示那些NoclassDefFounderror。
使用類路徑查找JAR文件類似於在類路徑中查找程序包文件。 區別在於,當您為JAR文件指定路徑時, 必須在該路徑的末尾包含JAR文件的名稱 。
因此,您可以嘗試執行以下操作:
java -classpath /usr/java/jdk1.6.0_21/lib/javax.mail.jar:/usr/java/jdk1.6.0_21/jre/lib/postgresql-9.1-901.jdbc4.jar -jar weekly.jar
另一個選擇是將jars放入jre / lib / ext(但我認為這不是一個好主意)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.