当前位置: 首页 > 知识库问答 >
问题:

运行jar文件时出现NoClassDefFoundError异常

瞿博易
2023-03-14

下载了以下链接:

http://www.java2s.com/Code/JarDownload/java/java-json.jar.zip

然后,我将jar添加到构建路径:右键单击项目

我能够使用java-json库而不会出现任何错误。然而,当我将项目导出到一个jar时,没有选项将java-json引用库作为jar的一部分。所以我假设通过将库添加到构建路径,我不必导出外部罐(无论如何也没有选项这样做):

创建了jar之后,我运行了程序:

java -jar gateway.jar -p 1732

我得到了以下错误:

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/json/JSONException
    at com.guarddoggps.main.UdpServer.run(UdpServer.java:28)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

运行时似乎找不到类JSONExctive,即使它显然在我包含在构建路径中的java-json.jar文件中,并且存在于Eclipse中的“引用库”中。

我会错过什么?

共有2个答案

曾航
2023-03-14

您也可以考虑创建一个所谓的胖jar,它包含所有需要的类。例如:http://fjep.sourceforge.net/

如果您不想通过管理自己的所有Debug的麻烦,考虑使用像Maven这样的构建工具。https://maven.apache.org/还是格拉德尔https://gradle.org/.它们将帮助您管理所有依赖项工作,甚至从internet下载所需的JAR。

常茂
2023-03-14

要解决此问题,可以使用以下命令启动应用程序

java -cp java-json.jar -jar gateway.jar -p 1732

为了正常工作,你必须将java-json.jar在导出的罐子的同一个目录中。

 类似资料:
  • 现在,当我运行和时,一切都很好,但是当我尝试运行项目时(在build/libs/中运行构建的jar和在IntelliJ中运行velotest类时也是如此),我会得到以下错误: 线程“main”java.lang.noClassDefFounderror:org/apache/commons/collections/extendedProperties 在org.apache.velocity.ru

  • 问题内容: 我已经将一个Java项目编译到一个Jar文件中,并且在运行它时遇到了问题。 当我跑步时: 我收到以下错误 该类文件不在jar的根目录中,因此我尝试更改主类的路径以使其与该类文件的路径匹配,并且遇到相同的问题。 我应该展平文件结构吗?如果是这样,我该怎么做。如果有任何用途,我正在使用Ant来构建Jar文件。 更新 这是jar的内容以及相关的Ant部分,我将我工作的公司的名称更改为“ or

  • 问题内容: 我刚刚开始学习Java,并且只知道少量的代码,但是,这仍然是一个简单的程序。它更多是一个恶作剧程序,但主要只是为了测试我是否可以创建一个jar文件。 这是代码: 我将其保存到名为的文件中,然后使用进行编译 这有效,当我使用运行它时 它也可以正常工作。 因此,然后我尝试创建一个jar文件。我使用命令 而且有效。之后,我双击jar文件,它出现一个错误。 所以我在cmd中运行它 并得到这个错

  • 运行hadoop jar文件时出现以下错误 线程“main”java中出现异常。lang.ClassNotFoundException:hdfs: 位于java。网URLClassLoader 1美元。在java上运行(URLClassLoader.java:366) 。网URLClassLoader 1美元。在java上运行(URLClassLoader.java:355) 。安全AccessC

  • 问题内容: 我正在尝试使用JavaMail API发送电子邮件。我从自解压二进制文件在我的主目录中安装了jdk 1.5。我正在使用Ubintu 9.10 我使用下一条命令编译程序: 〜/ jdk1.5.0_22 / bin / javac -classpath〜/ jdk1.5.0_22 / jre / lib / javamail-1.4.3 / mail.jar:〜/ jdk1.5.0_22

  • 问题内容: 我正在使用gradle作为JavaFX插件。即使在 distribution /下 构建和运行可执行文件之后,一切都可以完美运行,但只有一类: 为了多种目的,我创建了以下对象: 在IDE中运行该程序没问题,一切正常。但是,如果我构建并尝试运行.exe文件,则会得到以下-StackTrace: 我真的不明白。怎么可能找不到这个类,而我所有其他的类却都找不到呢? 我的build.gradl