2013-09-09 5 views
0

Я новичок в json, и я получаю запрос в формате json-объекта.ClassNotFoundException в JSON Анализ сервлета

 {"login_detail":[{"password":"world","username":"hello"}]} 

Я хочу, чтобы разобрать его сервлета и мой код, как Последующие

 public class LoginServlet extends HttpServlet{ 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    //String json=request.getParameter("x"); 
    try { 
     String jsonreq=request.getParameter("x"); 

     System.out.println(jsonreq); 



     JSONArray outerArray = (JSONArray) JSONSerializer.toJSON(jsonreq); 
     JSONObject json1 = (JSONObject) outerArray.get(0); 
     JSONArray jarray1 = json1.getJSONArray("login_detail"); 
     for (int i = 0; i < jarray1.size(); i++) 
     { 
      JSONObject hotel = jarray1.getJSONObject(i); 
      String user = hotel.getString("pasword"); 
      System.out.println(user); 
      String pass=hotel.getString("username"); 
      System.out.println(pass); 
     } 

     out.print(jsonreq); 

    }catch(Exception e){ 
     System.out.println("inside exception"); 
     e.printStackTrace(); 
    } 
    finally {    
     out.close(); 
    } 


} 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

public String getServletInfo() { 
    return "Short description"; 
}} 

Но я получаю исключение,

 Sep 09, 2013 4:57:52 PM org.apache.catalina.core.StandardWrapperValve invoke 
     SEVERE: Servlet.service() for servlet login threw exception 
     java.lang.ClassNotFoundException:   org.apache.commons.lang.exception.NestableRuntimeException 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850) 
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 
at com.serverside.LoginServlet.processRequest(LoginServlet.java:40) 
at com.serverside.LoginServlet.doPost(LoginServlet.java:72) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) 
at java.lang.Thread.run(Thread.java:722) 

Теперь я использую JSON-Lib 2,2. 2 файла jar. Нет никакой проблемы при получении запроса от клиента android. Я не могу понять, работает ли конструктор параметризации JSONObject в ANDROID, почему он не работает для сервлета. В чем проблема, которую я не могу понять. Если кто-нибудь мне поможет, я буду очень благодарен.

ответ

0

Наиболее вероятным объяснением является то, что JAR, который определяет Apache NestableRuntimeException, отсутствует в файле WAR вашего веб-сервера.

Согласно http://www.findjar.com, есть много файлов JAR, которые могут предоставить эту зависимость, но наиболее вероятным является один из файлов commons-lang-x.x.jar; например commons-lang-2.3.jar

Если вы создаете свой файл WAR с помощью Maven, просто добавьте соответствующую зависимость в файл POM. В противном случае загрузите JAR вручную и добавьте его в каталог «/ WEB-INF/lib» вашего файла WAR.

+0

наконец я получил решение моей проблемы –

1

Вы должны ко всем dependency libraries, если вы пропустите их, вы получите исключение во время выполнения. Вы отсутствуете org.apache.commons

Кстати, изменение hotel.getString("pasword"); к hotel.getString("password");

+0

я имею добавить все commong баночку извините я получаю такую ​​же проблему –

0

Вы можете скачать Apache Commons Lang и поместить файл банки под /WEB-INF/lib. Он должен решить проблему.

+0

я имею добавить все общие языки баночку Ы я получаю такую ​​же проблему ...... –

+0

http://json-lib.sourceforge.net/dependencies.html имеет все зависимости, которые нужно добавить. –

+0

У меня такая же проблема ... – DJhon

0

подтвердите, что ваши обязательства были скопированы в папку WEB-INF/lib ... Наверное, так.

1

наконец я должен решить мою проблему увидеть код

try { 
     String data=request.getParameter("x"); 
     System.out.println("received data : "+data); 
     JSONObject myjson=new JSONObject(data); 
     JSONArray json_array=myjson.getJSONArray("login_detail"); 
     // return simple array with [] bracket 
     System.out.println("json_array "+json_array); 
     int size=json_array.length(); 
     ArrayList<JSONObject> arrays=new ArrayList<JSONObject>(); 
     for(int i=0;i<size;i++){ 
      JSONObject another_json_object=json_array.getJSONObject(i); 
      arrays.add(another_json_object); 
     } 
     JSONObject[] jsons=new JSONObject[arrays.size()]; 
     arrays.toArray(jsons); 
    // return simple array with [] bracket 
     System.out.println("arrays :"+arrays); 
    // return simple array and filter [] when we call get(index) 
     System.out.println("0 index : "+arrays.get(0)); 
     //System.out.println("1 index : "+arrays.get(1)); 

     //here we are accessing value using key of the array at 0 index 
     // we can do same for next index --> get(index).get("key") 
     System.out.println(arrays.get(0).get("username")+" 
     "+arrays.get(0).getString("password")); 

    }catch(Exception e){ 
     System.out.println("inside exception"); 
     e.printStackTrace(); 
    }