json学习中遇到的status和java.lang.NoClassDefFoundError: net/sf/json/JSONArray问题

混蛋謌 发布于 2014/04/28 22:56
阅读 5K+
收藏 1

代码基本都一样,在myeclipse中总是提示xmlhttp.status的状态是404,在IDEA中就没问题,但是在IDEA中测试另一个代码的时候有提示这个java.lang.NoClassDefFoundError: net/sf/json/JSONArray

下面把Myeclipse中的代码和IDEA中的代码和错误信息贴出来

先是Myeclipse的主要代码

jsp:

<script type="text/javascript" src="<c:url value='/TestGet/Test.js'/> "></script>
  </head>
 
  <body>
    <form action="" enctype="application/x-www-form-urlencoded">
        <input type="button" name="ok" id="ok" value="测试">
    </form>
  </body>


javascript:

/**
 * Ajax建立和服务器的链接,接收服务器的请求,处理服务器返回的数据
 * 开发步骤:
 *   *创建XMLHttpRequest对象
 *   *打开和服务器的链接
 *   *发送数据
 *   *接收服务器的响应
 */

/**
 * 创建XMLHttpRequest对象
 */
 function ajaxFunction(){
     var xmlhttp;
     try{
         xmlhttp=new XMLHttpRequest();
     }catch(e){
         try{
             xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
         }catch(e2){
             try{
                 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
             }catch(e3){
                 alert("创建对象失败");
             }
         }
     }
     return xmlhttp;
 }
 
 window.onload = function(){
     document.getElementById("ok").onclick=function(){
         //1.获取xmlHttpRequest对象
         var xmlhttp = ajaxFunction();
         alert(xmlhttp);
         /**
         * 2.打开和服务器的链接
         * open(method,url,asynch)
         *  *method 请求方法 get post
         *  *url 请求的路径
         *  *asynch 表示请求是否是异步传输,默认值为true(异步);
         */
         xmlhttp.open("get","/TestServer",true);
         /**
         * 3.发送数据
         * 若选用的是get请求,则不会发送任何数据,给send方法传递null即可
         */
         xmlhttp.send(null);
         /**
         * 4.处理服务器端的响应
         *   *XMLHttpRequest对象中有一个readyState属性
         *   *0 代表未初始化,还没有调用open方法
         *   *1 代表正在加载,open方法已被调用,但send方法还没有被调用
         *   *2 代表已经加载完毕,send已经被调用,请求已经开始.
         *   *3 代表交互中,服务器正在发送数据
         *   *4 代表完成,响应发送完毕
         *
         * 每次readyState的值得改变,都会触发onreadystatechange事件
         */
         xmlhttp.onreadystatechange=function(){
             /**
              * 200:服务器处理成功
              * 304:文件没有被修改
              */
             if(xmlhttp.readyState==4){
                 if(xmlhttp.status==200||xmlhttp.status==304){
                     var data = xmlhttp.responseText;
                     alert(data);
                 }
             }
         }
     }
 }


Servlet:

package com.test1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServer extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        System.out.println("xxxxxxxxxxxxxxx");
        System.out.println("request.getMethod():"+request.getMethod());
        out.print("hello world");
    }

}



下面是IDEA中的主要代码和错误信息(这个查了一下好像是因为json库的问题,不确定,有谁能提供一个库吗?)

先上错误信息:

四月 28, 2014 10:51:15 下午 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [JsonServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: net/sf/json/JSONArray
    at com.test1.JsonServlet.doPost(JsonServlet.java:37)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

html:


   <script type="text/javascript">
        function ajaxFunction() {
            var xmlhttp;
            try{
                xmlhttp = new XMLHttpRequest();
            }catch (e){
                try{
                    xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
                }catch (e2){
                    try{
                        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                    }catch (e3){
                        alert("创建失败")
                    }
                }
            }
            return xmlhttp;
        }
        window.onload=function(){
            document.getElementById("ok").onclick=function(){
                var xmlhttp=ajaxFunction();
                xmlhttp.onreadystatechange=function(){
                    if(xmlhttp.readyState==4){
                        if(xmlhttp.status==200||xmlhttp.status==304){
                            var data = xmlhttp.responseText;
                            var dataObj = eval("("+data+")");
                            for(var i=0;i<dataObj.length;i++){
                                alert("---"+dataObj[i].pname);
                            }
                        }
                    }
                };
                xmlhttp.open("post","/JsonServlet?time="+new Date().getTime(),true);
                xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                xmlhttp.send();
            }
        }
    </script>
</head>
<body>
    <select id="province" name="province">
        <option value="">请选择...</option>
    </select>
    <input type="button" value="提交" id="ok"/>
</body>


Servlet:

import com.json1.Province;
import net.sf.json.JSONArray;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2014/4/26 0026.
 */
public class JsonServlet extends javax.servlet.http.HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        //String str = "{pid:1,pname:'吉林省'}";
        //out.print(str);

        //String str = "[{pid:1,pname:'山东'},{pid:2,pname:'河南'},{pid:3,pname:'湖南'}]";
        //out.print(str);

        List<Province> list = new ArrayList<Province>();
        Province p1 = new Province(1,"吉林省");
        Province p2 = new Province(2,"辽宁省");
        Province p3 = new Province(2,"山东省");
        list.add(p1);
        list.add(p2);
        list.add(p3);

        JSONArray jsonArray = JSONArray.fromObject(list);
        out.print(jsonArray.toString());
        System.out.print(jsonArray.toString());

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}


加载中
0
泥瓦匠BYSocket
泥瓦匠BYSocket

net/sf/json/JSONArray

没有这个包

泥瓦匠BYSocket
泥瓦匠BYSocket
回复 @黑色七月 : 给个最佳答案吧
混蛋謌
混蛋謌
包已经引进去了,还是有这个错,试了一下,在myeclipse中没问题
泥瓦匠BYSocket
泥瓦匠BYSocket
回复 @黑色七月 : 这就是一个 解析json的包
混蛋謌
混蛋謌
已经引进去了,不是在json-lib包下吗?我用的jdk1,7是不是不兼容不
混蛋謌
混蛋謌
找到了,等会回去试试,谢谢大神了
下一页
0
LucEsape
LucEsape

net.sf.json  这个json包引入

混蛋謌
混蛋謌
回复 @贰狮叔 : maven
混蛋謌
混蛋謌
回复 @贰狮叔 : 才学习json呢,都不会mean
LucEsape
LucEsape
回复 @黑色七月 : 是的。建议你使用maven管理
混蛋謌
混蛋謌
找到这个包了,等会回去试试,谢谢大神了
混蛋謌
混蛋謌
这是一个单独的jar包吗?
0
混蛋謌
混蛋謌

已经解决了,我去,换到最新版本的IDEA就可以了

返回顶部
顶部