2014-07-05 61 views
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沒有損壞。我該怎麼辦才能解決這個問題?

回答

1

指定在這樣的類路徑的jar文件:

java -cp .:/home/ec2-user/java-json.jar main.Server 

如果你的類路徑確實正確設置你的.bash_profile,你也可以這樣做:

java -cp .:$CLASSPATH main.Server 
+0

由於它的作品!你知道如何在每次執行的時候在命令中寫入jar嗎? 編輯:是的,第二個命令很好。謝謝! – itaied

+2

你可以使用[Maven Assembly Plugin](http://maven.apache.org/plugins/maven-assembly-plugin/)來構建一個可執行文件[包含所有依賴的JAR文件](http:// maven .apache.org /插件/行家組裝-插件/描述符refs.html#罐與 - 依賴性)。 –

相關問題