【问题标题】:NoClassDefFoundError Exception when running jar file运行 jar 文件时出现 NoClassDefFoundError 异常
【发布时间】:2014-06-04 18:08:37
【问题描述】:

我下载了以下链接:

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

然后我将 jar 添加到构建路径:右键单击项目 > 构建路径 > 配置构建路径 > 选择库选项卡 > 单击添加外部库 > 选择 Jar 文件下载。

我能够使用 java-json 库,而 eclipse 不会出现任何错误。但是,当我将项目导出到 jar 时,没有选择将 java-json 引用库作为 jar 的一部分包含在内。所以我假设通过将库添加到构建路径,我不必导出外部 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

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

我可能在这里遗漏了什么?

【问题讨论】:

    标签: java jar


    【解决方案1】:

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

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

    要使其正常工作,您必须将 java-json.jar 放在与导出的 jar 相同的目录中。

    【讨论】:

    【解决方案2】:

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

    如果您不想自己管理所有依赖项的麻烦,请考虑使用构建工具,如 Maven https://maven.apache.org/ 或 Gradle https://gradle.org/。他们将帮助您管理所有的依赖工作,甚至从互联网上下载所需的 jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2021-09-28
      • 2013-04-26
      • 2012-05-01
      相关资源
      最近更新 更多