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


    原因:Jetty会导致这个问题,Tomcat可以正常启动
     
    一、异常产生现象
    使用json-lib转换实体类/字符串,跑单元测试没问题,但是启动jetty后调用JSONArray.fromObject(data)就会抛标题中异常
     
    二、尝试解决的步骤
    1、网上有的说tomcat存在此问题,需要将jar包拷贝到tomcat目录,容器用的是jetty,所以不是这个原因(未解决)

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





  • 相关阅读:
    将博客搬至CSDN
    05 Python字符串的通用操作
    02 Shell变量
    01 Shell脚本编程入门知识
    windows10安装Python环境
    03 Python数值类型及数字类型详解
    02 变量和语句
    01 交互解释器
    poi.jar处理excel表
    (41)java并发包中的线程池种类及特性介绍
  • 原文地址:https://www.cnblogs.com/gossip/p/5369670.html
Copyright © 2020-2023  润新知