【问题标题】:JSONObject ClassNotFoundExceptionJSONObject ClassNotFoundException
【发布时间】:2013-04-03 18:44:31
【问题描述】:

我在 IntelliJ 工作并使用 Maven。我有一个使用JSONObject的类:

import org.json.JSONObject;

try {
  JSONObject documentObj = new JSONObject(document);
} catch (Exception e) {
  throw new RuntimeException("Failed to convert JSON String to JSON Object.", e);
}

pom.xml 文件中的 Maven 依赖:

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20090211</version>
</dependency>

我可以做一个mvn clean package 并成功构建。但是当我尝试运行它时,我得到:

错误:java.lang.ClassNotFoundException:org.json.JSONObject

这里还有什么我遗漏的吗?谢谢!

【问题讨论】:

  • 您是否检查了 jar 是在您的类路径中还是在 war 文件中?
  • 我在 intelliJ 中有我的项目,我在 linux 的命令行中使用 bash 脚本运行它。
  • 好吧,我明白了——你们都说得对,我的类路径中没有它。 bash 脚本中设置了两个变量:LIBJARS、作业所需的 jar 和 CLASSPATH。我将它设置在 CLASSPATH 中,但实际上它是需要在 LIBJARS 变量中的……接管他人代码的乐趣。 :) 感谢您的帮助!

标签: java json maven intellij-idea classnotfoundexception


【解决方案1】:

json jar 添加到您的类路径

或使用java -classpath json.jar ClassName

或者将此添加到您的 maven pom.xml 依赖项中:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
</dependency>

【讨论】:

  • 好吧,我明白了——你们都说得对,我的类路径中没有它。 bash 脚本中设置了两个变量:LIBJARS、作业所需的 jar 和 CLASSPATH。我将它设置在 CLASSPATH 中,但实际上它是需要在 LIBJARS 变量中的……接管他人代码的乐趣。 :) 感谢您的帮助!
  • 这是最新的依赖项,它似乎没有“import org.json.JSONObject;”。你能尽快指导吗? com.google.code.gsongson2.3.1
【解决方案2】:

截至今天(2020 年 7 月 15 日),您需要使用最新的 maven 存储库,如下所示:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20200518</version>
</dependency>

以后有什么新版本,可以在这里查看:

然后只需将 20200518 替换为最新的新版本值

【讨论】:

    【解决方案3】:

    使用最新的 maven 依赖解决了我的问题

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20171018</version>
    </dependency>
    

    【讨论】:

      【解决方案4】:

      最初我使用的是 net.sf.json-lib,但每当我尝试使用 .put() 方法时,它都会在 JSONArray 中产生问题

      以下解决了我的问题:

      <dependency>
          <groupId>org.json</groupId>
          <artifactId>json</artifactId>
          <version>LATEST</version>
      </dependency>
      

      虽然我不太喜欢使用LATEST,但由于它是一个数字版本号,而不是更容易理解的版本号,所以我发现这个对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-09
        • 2018-11-14
        • 2018-06-05
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多