java - 获取包含的 jar 的 NoClassDefFoundError

标签 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 没有损坏,因为它以前工作过。我应该怎么做才能解决这个问题?

最佳答案

像这样在类路径上指定 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/

相关文章:

Web 应用程序中的 Java Spring 错误处理性能

java - 我在 Selenium 中的 @Test 方法运行了两次

python - 为 Python2.X 和 3.X 设置 Django 环境?

java - Eclipse编辑器: customise the way the data is displayed

java - JMagick 在 OS X 中使用 Eclipse 设置问题 - UnsatisfiedLinkError : no JMagick in java. library.path

java - 我们如何使用 PostgreSQL 中的加密来获取地理服务器中的原始数据

java - 在二叉树中最大和路径的解决方案中查找错误

c# - 如何使用 .Net Core 在 Linux 上获取当前执行目录?

linux - 如何在Linux上的目录中重命名同一文件夹中具有不同/随机扩展名的所有文件?

java - 如何使用 Gradle 生成可执行的 .sh 文件?