(已解決)按照老師講的,我的出現(xiàn)下邊錯誤是什么原因呢,求幫助
信息: Server startup in 2652 ms
123
十二月 31, 2016 3:17:31 下午 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet [search] in context with path [/ajaxtest] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: net.sf.json.JSONArray
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1891)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1734)
at com.imooc.SearchServlet.doGet(SearchServlet.java:37)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

package?com.imooc;
import?java.io.IOException;
import?java.util.ArrayList;
import?java.util.List;
import?javax.servlet.ServletException;
import?javax.servlet.http.HttpServlet;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?net.sf.json.JSONArray;
public?class?SearchServlet?extends?HttpServlet?{
//這些是模擬數(shù)據(jù)
static?List<String>?datas?=?new?ArrayList<String>();
static?{
datas.add("ajax");
datas.add("ajaxpost");
datas.add("becky");
datas.add("bill");
datas.add("james");
datas.add("jerry");
}
@Override
protected?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
throws?ServletException,?IOException?{
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
System.out.println("123");
//首先獲得客戶端發(fā)送來的數(shù)據(jù)keyword
String?keyword?=?request.getParameter("keyword");
//獲得關鍵字后進行處理,得到關聯(lián)數(shù)據(jù)
List<String>?listData?=?getData(keyword);
//返回json格式
System.out.println(JSONArray.fromObject(listData));
// response.getWriter().write(JSONArray.fromObject(listData).toString());
}
//獲得關聯(lián)數(shù)據(jù)的方法
public?List<String>?getData(String?keyword){
List<String>?list?=??new?ArrayList<String>();
for?(String?data:datas){
if?(data.contains(keyword)){
list.add(data);
}
}
return?list;
}
}<%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%>
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
<html>
??<head>
??<style?type="text/css">
?? #mydiv{
?? position:absolute;
?? left:50%;
?? top:50%;
?? margin-left:-200px;
?? margin-top:-50;
?? }
??</style>
??
??<script?type="text/javascript">
?? var?xmlHttp;
?? //獲得用戶輸入內(nèi)容?的關聯(lián)信息?的函數(shù)
?? function?getMoreContents(){
?? //首先要獲得用戶輸入的內(nèi)容
?? var?content?=?document.getElementById("keyword");
?? if?(content.value?==?""){
?? return;
?? }
?? //然后要給服務器發(fā)送用戶輸入的內(nèi)容,因為我們采用的是ajax異步發(fā)送數(shù)據(jù);
?? //所以我們要使用一個對象,叫做XmlHttp對象
?? xmlHttp?=?createXMLHttp();//獲得xmlHttp對象
?? //要給服務器發(fā)送數(shù)據(jù)
?? var?url?=?"search?keyword="+escape(content.val);
?? //true表示javascript腳本會在send方法之后繼續(xù)執(zhí)行,而不會等待來自服務器的響應
?? xmlHttp.open("GET",?url,?true);
?? //xmlHttp綁定回調(diào)方法,這個回調(diào)方法會在xmlHttp狀態(tài)改變的時候被調(diào)用
?? //xmlhttp的轉(zhuǎn)態(tài)為0-4,我們只關心4(compete)這個狀態(tài)
?? //所以說,當完成之后再調(diào)用回調(diào)方法才有意義。
?? xmlHttp.onreadystatechange?=?callback;
?? xmlHttp.send(null);
?? }
?? //獲得XMLHttp對象
?? function?createXMLHttp(){
?? //對于大多數(shù)瀏覽器都使用
?? var?xmlHttp;
?? if?(window.XMLHttpRequest){
?? xmlHttp?=?new?XMLHttpRequest();
??
?? }
?? //要考慮瀏覽器的兼容性
?? if?(window.ActiveXObject){
?? xmlHttp?=?new?ActiveXObject("Microsoft.XMLHTTP");
?? if?(!xmlHttp){
?? xmlHttp?=?new?ActiveXObject("Msxml.XMLHTTP");
?? }
?? }
?? return?xmlHttp;
?? }
?? //回調(diào)函數(shù)
?? function?callback(){
?? //4代表完成
?? if?(xmlHttp.readyState?==?4){
?? //200代表服務器響應成功
?? //404代表資源未找到,500代表服務器內(nèi)部錯誤
?? if?(xmlHttp.status?==?200){
?? //交互成功,獲得相應的響應數(shù)據(jù),是文本格式
?? var?result?=?xmlHttp.responseText;
?? //解析獲得數(shù)據(jù)
?? var?json?=?eval("("+result+")");
?? //獲得數(shù)據(jù)后就可以動態(tài)的顯示這些數(shù)據(jù)了,把這些數(shù)據(jù)展示到輸入框的下面
?? alert(json);
?? }
?? }
?? }
?? //設置關聯(lián)數(shù)據(jù)的展示,參數(shù)代表的是服務器傳遞過來的關聯(lián)數(shù)據(jù)
?? function?setContent(contents){
?? //首先獲取關聯(lián)數(shù)據(jù)的長度,以此來確定生成多少<tr></tr>
?? var?size?=?contens.length;
?? //設置內(nèi)容
?? for(var?i?=?0;i?<?size;??i++){
?? var?nextNode?=?content[i];//代表的是json格式數(shù)據(jù)的第i個元素
?? var?tr?=??document.createElement("tr");
?? var?td?=?document.createElement("td");
?? td.setAttribute("border",?"0");
?? td.setAttribute("bg_color",?"#FFAFA");
?? td.onmouseover?=?function()?{
?? this.className?=?'mouseOver';
?? };
?? td.onmouseout?=?function()?{
?? this.className?=?'mouseOut';
?? };
?? td.onclick?=?function()?{
?? //這個方法實現(xiàn)的是:當用鼠標點擊一個關聯(lián)的數(shù)據(jù)時,所點擊關聯(lián)數(shù)據(jù)自動設置為輸入框數(shù)據(jù)
??
?? };
?? var?text?=?document.createTextNode(nextNode);
?? td.appendChild(text);
?? tr.appendChild(td);
?? document.getElementById("content_table_body").appendChild(tr);
?? }
?? }
??</script>
??</head>
??
??<body>
????<div?id="mydiv">
????<!--?輸入框?-->
????<input?type="text"?size="60"?id="keyword"?onkeyup="getMoreContents()"/>
????<input?type="button"?value="百度一下?"?width="50px">
????<!--?下面是內(nèi)容展示區(qū)域?-->
????<div?id="popDiv">
???? <table?id="content_table"?bgcolor="#FFFAFA"?border="0"?cellspacing="0"?cellpading="0">
???? <tbody?id="content_table_body">
???? <!--?動態(tài)查詢出來的數(shù)據(jù)顯示在這個地方?-->
???? <tr><td>ajax</td></tr>
???? <tr><td>ajax1</td></tr>
???? <tr><td>ajax2</td></tr>
???? </tbody>
???? </table>
????</div>
????</div>
??</body>
</html><?xml?version="1.0"?encoding="UTF-8"?> <web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?xmlns="http://java.sun.com/xml/ns/javaee"?xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"?id="WebApp_ID"?version="3.0"> ??<display-name>ajaxtest</display-name> ??<welcome-file-list> ????<welcome-file>index.html</welcome-file> ????<welcome-file>index.htm</welcome-file> ????<welcome-file>index.jsp</welcome-file> ????<welcome-file>default.html</welcome-file> ????<welcome-file>default.htm</welcome-file> ????<welcome-file>default.jsp</welcome-file> ??</welcome-file-list> ??<servlet> ?? <servlet-name>search</servlet-name> ?? <servlet-class>com.imooc.SearchServlet</servlet-class> ??</servlet> ?? ??<servlet-mapping> ?? <servlet-name>search</servlet-name> ?? <url-pattern>/search</url-pattern> ??</servlet-mapping> </web-app>
2017-12-06
對的,需要重啟myeclipse
2017-01-19
我也遇到這樣的問題,我用eclipse,jar包也復制了,但是問題還是沒有解決。
2016-12-31
已解決,解決辦法:打開myeclipse,將所需要的jar包復制到lib文件夾里面,重啟項目,問題搞定
2016-12-31
我在想是不是有可能導的包有問題