关于JAVA Json运行期间出现java.lang.NoClassDefFoundError问题

近期开发一个应用使用websocket从服务器向客户端推送,并通过json传输数据,json语句JSONArray ass=JSONArray.fromObject(lista)编写期间没有任何问题,可运行总出现java.lang.NoClassDefFoundError错误,JSON所需要的6个jar包全部导入,放在web-inf的lib文件夹下,然而一直出错,网上众说纷纭,大部分解决方法是各种方式的导入:把jar包拷贝到tomcat的lib下;通过build-path导入;拷贝到tomcat项目生成文件的lib目录下。因为我的tomcat文件下已经有这个jar包,但还是把所有的方式试了一遍,依然出错。

后来考虑编写期间没有问题,而只是运行期间出错,应该是jar包之间的不兼容问题,搜索资料:

commons-beanutils-1.8.0.jar不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean
commons-collections.jar 不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap
commons-lang-2.4.jar不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
commons-logging-1.1.1.jar不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
ezmorph-1.0.4.jar不加这个包
java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
json-lib-2.3-jdk15.jar不加这个包
java.lang.NoClassDefFoundError: net/sf/json/JSONObject

所以定位到commons-collections- 4.1.jar这个包(具体问题如下列表),上官网查看有两个版本:

可是我的jdk是java1.8,应该安装4.1啊,无奈下载3.2.2下来试试,结果通了,也是一头雾水,可是问题解决了(java1.3 or later  java 6.0+这些版本是什么情况,java1.8不就是java8吗,两个都符合,搞不懂,请大神指点)。

在json的六个包中,commons-collections.jar和commons-lang.jar这两个包存在多个版本,适当选择就行,下面是java1.8下json的全部jar包:


百度后去官网即可下载,也可以QQ我。

猜你喜欢

转载自blog.csdn.net/zhangzhao0907/article/details/78310294