upright_diligent
2011-01-06 10:46 阅读 232
已采纳

json转换问题

碰到了一个json转换的问题,以下是测试代码:
List list = new ArrayList();

list.add( "first" );

list.add( "second" );

JSONArray jsonArray2 = JSONArray.fromObject( list );

程序执行到这行,JSONArray jsonArray2 = JSONArray.fromObject( list );

老是报下面的错误,找了半天也没找到,该引用的包我都引了啊,把源码下载下来debug,也没找到错误

java.lang.NoSuchMethodError: java.lang.ThreadLocal.remove()V
net.sf.json.AbstractJSON.removeInstance(AbstractJSON.java:221)
net.sf.json.JSONArray._fromCollection(JSONArray.java:909)
net.sf.json.JSONArray.fromObject(JSONArray.java:118)
net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:105)
net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:84)
caiwu.YsImportServlet.doPost(YsImportServlet.java:78)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

我jdk1.4的,下的jar包分别为
commons-httpclient-3.1.jar,commons-collections-3.2.1.jar,morph-1.1.1.jar,
json-lib-2.4-jdk13.jar,ezmorph-1.0.6.jar,commons-logging.jar,commons-lang-2.5.jar
commons-beanutils.jar

可能是jar包不兼容吧,但是不知道哪个jar包的问题,换了几个jar包也不行,期待高人的解答,谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

7条回答 默认 最新

  • 已采纳
    zhanjia 二进制之路 2011-01-06 10:52

    Json-lib requires (at least) the following dependencies in your classpath:

    jakarta commons-lang 2.5
    jakarta commons-beanutils 1.8.0
    jakarta commons-collections 3.2.1
    jakarta commons-logging 1.1.1
    ezmorph 1.0.6

    看看这些的版本有没有问题

    点赞 评论 复制链接分享
  • beneo beneo 2011-01-06 10:52

    jdk1.4 ??

    那我真的不能帮你了。。

    [quote]commons-collections-3.2.1.jar,morph-1.1.1.jar,
    json-lib-2.4-jdk13.jar,ezmorph-1.0.6.jar,commons-logging.jar,commons-lang-2.5.jar
    commons-beanutils.jar [/quote]

    这些版本太高了吧

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 10:55

    或者看看json-lib包有没有损坏,重新下载一个试试

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 10:56

    使用JDK 5吧

    点赞 评论 复制链接分享
  • hermit1216 hermit1216 2011-01-06 10:59
    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 15:19

    [quote]remove是java.lang.ThreadLocal类的方法,但是jdk1.4中,却没有这个方法的实现,jdk1.5中有这个方法,因此是没问题的

    看来jdk1.4是没法用这个json-lib-2.4-jdk13.jar包的,它官网上的这个json-lib-2.4-jdk13.jar根本就存在个bug,汗,

    要想在jdk1.4下用,或者改json-lib-2.4-jdk13的源码,或者完善java.lang.ThreadLocal类,让它实现remove方法,不知道各位还有啥高见?[/quote]

    我一直用的是
    json-lib-*-jdk15.jar,jdk也用1.5,所以没遇过这问题

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 15:20

    那就直接下载它的源码去修改,看看网上有没有修改的方法,或者下载更新的json-lib的源代码包,看它里面是怎么实现的

    点赞 评论 复制链接分享

相关推荐