2014-12-16 17 views
12

Sto usando Eclipse IDE e sto scrivendo un servlet. Il servlet deve accettare valori da un file html e restituire di conseguenza la risposta JSON.java.lang.NoClassDefFoundError: org/json/JSONObject

mio doPost() è:

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 

     try 
     { 
     res.setContentType("application/json"); 
     res.setHeader("Cache-Control", "nocache"); 
      res.setCharacterEncoding("utf-8"); 

     PrintWriter out = res.getWriter(); 

     JSONObject json = new JSONObject(); 

     String un=req.getParameter("uname"); 
     String pw=req.getParameter("password"); 

     if(un.equals("xxx") && pw.equals("xxx"))    
      json.put("result", "success"); 
     else 
      json.put("result", "fail"); 

     out.print(json.toString()); 
     } 
     catch(Exception e){System.out.print(e.getMessage());} 
    } 

Quando ho eseguito questo servlet in Eclipse ottengo una finestra di dialogo di download.

Quando correre fuori Eclipse con Tomcat, ottengo errore:

root cause 

java.lang.NoClassDefFoundError: org/json/JSONObject 
    Server1.doPost(Server1.java:25) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

root cause 

java.lang.ClassNotFoundException: org.json.JSONObject 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558) 
    Server1.doPost(Server1.java:25) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

La linea Server1.doPost (Server1.java:25) si riferisce a

JSONObject json = new JSONObject(); 

Ho aggiunto l'org.json .jar al percorso di build e aggiunto al percorso di distribuzione in Properties->Configure build path->Deployment assembly

+0

Speranza i link qui sotto aiuta http://stackoverflow.com/questions/14657585/java-lang-noclassdeffounderror-org-json-simple- parser-parseexception-with-eclip – sankar

+0

È sufficiente verificare se la libreria (org.json.jar) è stata generata nella posizione di distribuzione. In base ai commenti, è stato aggiunto il jar richiesto nel classpath e nel gruppo di distribuzione. Dovrebbe essere generato nella posizione di distribuzione. È disponibile nella posizione di distribuzione? –

+0

Fornisci maggiori dettagli su come esegui la tua applicazione in Tomcat.Ad esempio, se si esporta un WAR da Eclipse e lo si distribuisce manualmente in Tomcat, è necessario verificare se i JAR vengono esportati correttamente nella cartella/lib all'interno di WAR. – AJPerez

risposta

21

No .. Non è modo corretto. consultare i passi,

For Classpath reference: Fare clic destro sul progetto in Eclipse -> Buildpath -> Configura costruire il percorso -> Java Build Path (sinistra Pane) -> Biblioteche (tab) -> Aggiungi Vasi esterni -> Seleziona il tuo vaso e selezionare OK.

For Deployment Assembly: Fare clic con il tasto destro su WAR in eclissi-> Buildpath -> Configura percorso build -> Deployment Assembly (riquadro sinistro) -> Aggiungi -> File system esterno -> Aggiungi -> Seleziona il tuo jar -> Aggiungi -> Fine.

Questo è il modo corretto! Non dimenticare di rimuovere la variabile di ambiente. Non è richiesto ora.

Prova questo. Sicuramente funzionerà. Prova ad usare Maven, ti semplificherà il compito.

+0

Sì, ha funzionato bene! Grazie! – HitchHiker

+0

Jaya Anamthram Lo ha fatto :) – HitchHiker

+0

Ha funzionato per me. Grazie. –

-1

Aggiungi jar json al classpath

o utilizzare java -classpath json.jar ClassName

riferiscono this

+0

Ho aggiunto il file jar in classpath modificandolo nelle variabili di ambiente. È il modo di farlo , destra? – HitchHiker

1

L'eccezione è di per sé dice tutto java.lang.ClassNotFoundException: org.json.JSONObject

Non si è aggiunto il file jar necessaria, che sarà avere org.json.JSONObject classe alla vostra classpath.

Puoi Download it From Here

Problemi correlati