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

原因:Jetty会导致这个问题,Tomcat可以正常启动

 

一、异常产生现象

使用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;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_37576193

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值