我正在编写一个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。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
在类路径中指定jar文件,如下所示:
java -cp .:/home/ec2-user/java-json.jar main.Server
如果您的.bash_profile
确实正确设置了类路径,那么您也可以这样做:
java -cp .:$CLASSPATH main.Server