我正在编写一个 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 没有损坏,因为它以前工作过。我应该怎么做才能解决这个问题?
最佳答案
像这样在类路径上指定 jar 文件:
java -cp .:/home/ec2-user/java-json.jar main.Server
如果您的类路径确实在您的 .bash_profile
中正确设置,您还可以:
java -cp .:$CLASSPATH main.Server
关于java - 获取包含的 jar 的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24586753/