出现java.lang.NoClassDefFoundError:org/json/JSONException错误的解决方案
org/json/JSONException 未找到这个 类的定义, 有可能是这个类对应的jar版本 和 你当前的jdk版本 存在冲突,导致无法识别到这个类
针对这个问题,根据参考资料,可以采取以下几个解决方案:
1.添加依赖
根据参考资料中的段落0,可以尝试添加如下依赖:
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.1</version>
</dependency>
2.将6个jar包添加到Tomcat目录下的lib文件夹中
根据参考资料中的段落3,可以将json所需的6个jar包复制到Tomcat目录下的lib文件夹中,然后重启Tomcat即可。
3.在多模块项目中添加依赖
如果是多模块项目,可以在父模块下的pom文件中设置版本号,比如:
<properties>
<jakarta-json.version>2.0.1</jakarta-json.version>
<elasticsearch.version>7.16.2</elasticsearch.version>
</properties>
然后在子模块的pom文件中添加依赖,如下所示:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>${jakarta-json.version}</version>
</dependency>
4.在单模块项目中添加依赖
如果是单模块项目,可以在pom文件中添加如下依赖:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.16.2</version>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.1</version>
</dependency>
需要注意的是,如果项目中已经存在旧版本的依赖,需要先将其排除掉,然后再添加新版本的依赖。比如:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.16.2</version>
<exclusions>
<exclusion>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.1</version>
</dependency>
5.修改SpringBoot版本或者json版本
根据参考资料中的段落6,有时候是因为SpringBoot版本或者json版本的问题导致找不到类出现异常,这时候需要替换掉对应的版本。比如,将SpringBoot版本替换成2.5.6,将json版本替换成2.0.1。
应该是你的代码中用到了json序列化,但是编译的时候没有找到相应的类 JSONException,检查下json依赖是否成功添加