1
我正在編寫一個Java應用程序並在Linux ec2服務器上運行它。 的程序流暢運行昨天,以後我改和organazied一些文件和包裹,當我執行程序我得到這個問題:獲取包含的jar的NoClassDefFoundError
我運行PROGRAMM用這個命令:
java -cp . main.Server
並得到以下錯誤:
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/json/JSONObject
at main.Group.<init>(Group.java:28)
at main.Server.run(Server.java:23)
Caused by: java.lang.ClassNotFoundException: org.json.JSONObject
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 2 more
我是跑PROGRAMM因爲這樣的改變之前:
export CLASSPATH=$CLASSPATH:/home/ec2-user/java-json.jar
在bin文件夾,命令:
java Server
而且PROGRAMM正在運行。 因爲我將軟件包從默認名稱更改爲main
,所以我需要使用命令java -cp . main.Server
運行它,但是我得到上面寫的錯誤。
我也試圖對矯正的.bash_profile
,並補充一點:
CLASSPATH=$CLASSPATH:/home/ec2-user/java-json.jar
export CLASSPATH
但它並沒有幫助。 我在我的代碼中沒有錯誤,並且由於它之前的工作原因,jar沒有損壞。我該怎麼辦才能解決這個問題?
由於它的作品!你知道如何在每次執行的時候在命令中寫入jar嗎? 編輯:是的,第二個命令很好。謝謝! – itaied
你可以使用[Maven Assembly Plugin](http://maven.apache.org/plugins/maven-assembly-plugin/)來構建一個可執行文件[包含所有依賴的JAR文件](http:// maven .apache.org /插件/行家組裝-插件/描述符refs.html#罐與 - 依賴性)。 –