记一次未解决的异常:java.lang.NoClassDefFoundError: net/sf/json/JSONObject

一、异常产生现象

使用json-lib转换实体类/字符串,跑单元测试没问题,但是启动jetty后调用JSONArray.fromObject(data)就会抛标题中异常

二、尝试解决的步骤

1、网上有的说tomcat存在此问题,需要将jar包拷贝到tomcat目录,容器用的是jetty,所以不是这个原因(未解决)

http://blog.csdn.net/yeqiuzs/article/details/45097063

2、json-lib需要引入其它库,如图所示,引入后单元测试可以跑通,但是jetty启动还是抛异常(未解决)

http://stackoverflow.com/questions/11567383/java-runtime-classnotfoundexception

3、项目中用到了commons-lang3,考虑和commons-lang 2.5是否存在兼容性问题,删除commons-lang3后还是抛异常(未解决)


1

2

3

4

5

<dependency>

            <groupId>org.apache.commons</groupId>

            <artifactId>commons-lang3</artifactId>

            <version>3.4</version>

        </dependency>

4、考虑是不是json-lib其他库的版本问题,将图中下半部分的版本改成和上半部分一样,还是抛异常(未解决)

三、最终替代方案:fastjon

原因如下:

1、阿里巴巴开源,质量和效率有保障

2、不依赖其它jar包

3、使用简单,满足要求

pom依赖:


1

2

3

4

5

<dependency>

     <groupId>com.alibaba</groupId>

     <artifactId>fastjson</artifactId>

     <version>1.2.7</version>

</dependency>

工具类代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

import java.util.ArrayList;

import java.util.List;

import com.alibaba.fastjson.JSON;

/**

 * Json工具类

 *

 */

public class JsonUtil {

    /**

     * 字符串转换为实体类

     *

     */

    public static <T> T StringToEntity(String str, Class<T> classT) {

        T t = JSON.parseObject(str, classT);

        return t;

    }

    /**

     * 字符串转换为实体集合

     *

     */

    public static <T> ArrayList<T> StringToEntityList(String str, Class<T> classT) {

        List<T> lst = JSON.parseArray(str, classT);

        return (ArrayList<T>) lst;

    }

    /**

     * 实体类转换为字符串

     *

     */

    public static <T> String EntityToString(T data) {

        String str = JSON.toJSONString(data);

        return str;

    }

}

来自为知笔记(Wiz)

时间: 2024-12-13 13:15:14

记一次未解决的异常:java.lang.NoClassDefFoundError: net/sf/json/JSONObject的相关文章

使用JSONObject遇到的问题,java.lang.NoClassDefFoundError: net/sf/json/JSONObject

先是报 java.lang.NoClassDefFoundError: net/sf/json/JSONObject 这个错误, 打开项目属性找到java build path中的libaries,找不到json相关的包, 我就手动将json-lib-2.3-jdk15.jar这个包引入,但是还是报同样的错误, 上网搜了下,有人说还需要把这个包放到对应TOMCAT/LIB目录下, 于是照做,终于不报这个错误了,但是报了其他错误: org.apache.commons.lang.exception

java.lang.ClassNotFoundException: net.sf.json.JSONObject

先去检查依赖包的问题 使用net.sf.json需要导入的包 如果jar 文件都存在. 右键项目选择Build path 在develoyment Assembly 添加 maven dependencies 网友回答1: 我已经导入了json的jar包及其需要的依赖包,过程是:右键项目选择Build path –> config build path –>add extenal jar加入以上所需要的jar.此时发现在servlet中写的关于JSONObject的代码不发生错误了,然后运行程

Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决

下面代码: public static void main(String[] args) { JSONObject obj = new JSONObject(); obj.put("msg", "HELLO"); obj.put("path", "/pages/back/emp.jsp"); System.out.println(obj); } 如果遇到java.lang.NoClassDefFoundError: net/s

Kafka + Flink 出现异常 java.lang.NoClassDefFoundError: org/apache/flink/streaming/util/serialization/DeserializationSchema

我在 IDEA 环境中调试 Kafka+Flink 自己编写的例子时 代码编译都是通过的,但是进行Debug调试时,出现如下异常: java.lang.NoClassDefFoundError: org/apache/flink/streaming/util/serialization/DeserializationSchema at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetD

springboot 整合 CXF 版本异常 java.lang.NoClassDefFoundError:ServletRegistrationBean

在使用SpringBoot 项目整合webservice组件 CXF的时候,在启动时,抛出异常如下,查阅资料初步判断为版本问题.升级到高版本后正常启动. cxf 刚开始使用版本  3.1.7 后更新为 3.2.5 . 参考借鉴: spring boot 1.4 版本对应cxf-spring-boot-starter-jaxws   3.1.X  版本 spring boot 1.5 版本对应cxf-spring-boot-starter-jaxws   3.2.X  版本 https://blo

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException

转载:http://www.tuicool.com/articles/Vvia6f 缺少相应jar包都会有异常,根据异常找jar包导入...... 这里我说下lang包,因为这个包我找了好半天: 我用的是: commons-lang3-3.1.jar  出现异常: java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException 可以看出是因为缺少jar包,但是很明显我已经导入了,

使用Json出现java.lang.NoClassDefFoundError解决方法

前几天在项目使用到Json格式数据,于是把使用Json需要用到的包都引到了工程里面,程序写好后运行时,发现后台报 java.lang.NoClassDefFoundError: net/sf/json/JSONArray 的错误,开始以为相应的jar包引入有问题,检查后发现所有的包都已经引入了,怎么还会出现这个问题呢? 原来我使用的是eclipse+tomcat 环境,因该项目已经部署过,使用jason所用的包是后面加的,我在eclipse里面配置了,但是eclipse不会自动把这些包重新部署到

Java_异常_02_java.lang.NoClassDefFoundError: org/apache/log4j/Level

总结:解析Json时,除了要导入json-lib-2.2-jdk15.jar外,还要导入: commons-beanutils.jar, commons-httpclient.jar, commons-lang.jar, ezmorph.jar, morph-1.0.1.jar 1.异常1信息: Failed to instantiate SLF4J LoggerFactory Reported exception: java.lang.NoClassDefFoundError: org/apa

【异常处理】java.lang.NoClassDefFoundError

Exception in thread"main" java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException 使用环境: 项目中转json ,报了这个异常. 看了下json需要的jar包,都导入了. 查找了下原因,发现commons-collections-3.X.jar 和 commons-lang3-3.X.jar冲突的问题. 用commons-lang 2.X