获取包含jar的NoClassDefFoundError

时间:2014-07-05 13:06:50

标签: java linux eclipse jar

我正在编写一个java应用程序并在linux ec2服务器上运行它。 该程序昨天流畅运行,在我更改并组织了一些文件和软件包后,我在执行程序时遇到了这个问题:

我用这个命令运行程序:

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

我在更改之前运行了这个程序:

export CLASSPATH=$CLASSPATH:/home/ec2-user/java-json.jar

在bin文件夹中,命令:

java Server

程序正在运行。 由于我将包从默认名称更改为main,因此我需要使用命令java -cp . main.Server运行它,但我收到上面写的错误。

我也尝试修改.bash_profile并添加:

CLASSPATH=$CLASSPATH:/home/ec2-user/java-json.jar
export CLASSPATH

但它没有帮助。  我的代码中没有错误,因为它之前的工作没有破坏jar。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

在类路径中指定jar文件,如下所示:

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

如果您的.bash_profile确实正确设置了类路径,那么您也可以这样做:

java -cp .:$CLASSPATH main.Server