java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException问题解决

在做一个String转JsonObject的过程中,报了一个很恶心的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at com.xf.test.TestJson.main(TestJson.java:8)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 13 more

大概意思是说,需要导包org.apache.commons.lang,我检查了下,我导入的包是org.apache.commons.lang3,lang和lang3有什么区别呢?
lang3是Apache Commons 团队发布的工具包,要求jdk版本在1.5以上,相对于lang来说完全支持java5的特性,废除了一些旧的API,但是该版本无法兼容旧有版本,于是为了避免冲突改名为lang3,所以如果需要使用旧有特性,需要引入lang(建议lang和lang3一起引入,省得麻烦)。

引入lang以后,又报了如下错误java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher:

Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
	at com.xf.test.TestJson.main(TestJson.java:8)
Caused by: java.lang.ClassNotFoundException: net.sf.ezmorph.Morpher
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 1 more

查了资料才知道,使用JSON,在SERVLET或者STRUTS的ACTION中取数据时候,如果出现异常:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher,原因是少了JAR包,造成类找不到,除了要导入JSON网站上面下载的json-lib.jar包之外,还必须有其它几个依赖包:

commons-beanutils.jar

commons-httpclient.jar

commons-lang.jar

ezmorph.jar

morph-1.0.1.jar(该包不导入好像也没问题)

这个问题之前也遇到过,但是每次都少这个包或那个包,仅此记录下,避免再次遗忘:

public class TestJson {
	public static void main(String[] args) {
		String str = "{\"status\":0,\"result\":{\"location\":{\"lng\":116.32955083057994,\"lat\":39.971617532034439},\"formatted_address\":\"北京市海淀区南大街2号\",\"business\":\"人民大学,双安,双榆树\",\"addressComponent\":{\"country\":\"中国\",\"country_code\":0,\"country_code_iso\":\"CHN\",\"country_code_iso2\":\"CN\",\"province\":\"北京市\",\"city\":\"北京市\",\"city_level\":2,\"district\":\"海淀区\",\"town\":\"\",\"town_code\":\"\",\"adcode\":\"110108\",\"street\":\"南大街\",\"street_number\":\"2号\",\"direction\":\"附近\",\"distance\":\"11\"},\"pois\":[],\"roads\":[],\"poiRegions\":[{\"direction_desc\":\"内\",\"name\":\"数码大厦\",\"tag\":\"房地产;写字楼\",\"uid\":\"3dd9b965c5cc64b3c8213d50\",\"distance\":\"0\"}],\"sematic_description\":\"数码大厦内,华宇时尚购物中心西北66米\",\"cityCode\":131}}";
		JSONObject json = JSONObject.fromObject(str);
		System.out.println(json);
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值