开发者社区> 问答> 正文

震惊!JSONObject.fromObject(String)方法运行报错,不知道啥情况?报错

颓了颓了,,,,,我将GSON数据POST给服务器,想在服务器端解析,使用

JSONObject json =  JSONObject.fromObject(String)编译不报错,运行报错

我以为是String数据结构问题,于是就用GSON先把数据转换成json格式,然后在解析,还是报错。。。

   List<Handle_HistoryDate> mlist = new ArrayList<Handle_HistoryDate>();
   mlist.add(new Handle_HistoryDate(11,200,"232",25,36));
   Gson gson = new Gson(); 
   String flag = gson.toJson(mlist); 
   System.out.println(flag);
        
  JSONObject json =  JSONObject.fromObject(flag); 

传递进入flag参数为:

报错信息为:

六月 27, 2017 9:38:39 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [servlet.Login] in context with path [/hwyServer] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2503)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:831)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139)
    at servlet.Login.doPost(Login.java:131)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

 

jar包为:

 

 


          

展开
收起
爱吃鱼的程序员 2020-06-08 13:18:13 1056 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    JsonArray 转下呢···你那报错信息真无心吐槽·····

    Stringflag="[{\"measure\":11,\"speed\":200,\"date\":\"223\",\"col\":25,\"humi\":36}]";
          System.out.println(flag);
          //[{"measure":11,"speed":200,"date":"223","col":25,"humi":36}]
          JSONArrayarray=JSONArray.fromObject(flag);
          System.out.println(array);
          //[{"measure":11,"speed":200,"date":"223","col":25,"humi":36}]

    加个commons-lang-2.X.jar试试

    tomcat的classloader是动态加载class文件的,你的问题就是缺少jar包,所以发生了运行时错误。具体错误原因你给出的栈信息不足,很难判断。

    不用震惊...你这就是缺失jar包.至于编译时没错,那是因为你还没触发到异常.

    运行的时候出错了,比如解析字符串有问题. 那就抛异常了,结果抛异常的时候找不到异常类.所以就出现你现在的这个错误了.

    最后指正:这个类是commons-lang-2.xx版本的.你用的是commons-lang-3.xxx版本

    网上查了,归纳下,有几种可能

    1、jar包不全

    2、传递进入的数据格式有误

    3、jar包和jdk版本不符合(我的版本为jdk1.8)

    第三种我没试过,但是我感觉不太可能啊,前两个应该没问题,大家帮忙看看

    引用来自“skhuhu”的评论

    JsonArray 转下呢···你那报错信息真无心吐槽·····

    fastjson····里面有现成的方法····

    引用来自“为为02”的评论

    tomcat的classloader是动态加载class文件的,你的问题就是缺少jar包,所以发生了运行时错误。具体错误原因你给出的栈信息不足,很难判断。

    引用来自“DeMoNHaDeS”的评论

    加个commons-lang-2.X.jar试试

    引用来自“张恒强”的评论

    不用震惊...你这就是缺失jar包.至于编译时没错,那是因为你还没触发到异常.

    运行的时候出错了,比如解析字符串有问题. 那就抛异常了,结果抛异常的时候找不到异常类.所以就出现你现在的这个错误了.

    最后指正:这个类是commons-lang-2.xx版本的.你用的是commons-lang-3.xxx版本

    2020-06-08 13:18:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多