Domanda java.lang.NoClassDefFoundError: org / json / JSONObject [duplicato]


Questa domanda ha già una risposta qui:

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.

Il 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 eseguo questo servlet in Eclipse viene visualizzata una finestra di dialogo per il download dei file.

Quando corro all'esterno di Eclipse con Tomcat, ottengo un 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 org.json.jar al percorso di build e l'ho aggiunto al percorso di distribuzione in Properties->Configure build path->Deployment assembly


17
2017-12-16 12:16


origine


risposte:


No .. Non è il modo corretto. Fare riferimento alla procedura,

For Classpath reference: Fai clic con il tasto destro del mouse su progetto in Eclipse -> Buildpath -> Configura percorso build -> Percorso build Java (riquadro sinistro) -> Librerie (scheda) -> Aggiungi contenitori esterni -> Seleziona il tuo contenitore e seleziona OK.

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

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

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


23
2017-12-16 14:32



Si prega di aggiungere la seguente dipendenza http://mvnrepository.com/artifact/org.json/json/20080701

<dependency>
   <groupId>org.json</groupId>
   <artifactId>json</artifactId>
   <version>20080701</version>
</dependency>

10
2018-02-17 20:23



L'Eccezione dice tutto java.lang.ClassNotFoundException: org.json.JSONObject

Non hai aggiunto il file jar necessario che verrà creato org.json.JSONObject classe al tuo classpath.

Puoi Scaricalo da qui


1
2017-12-16 12:21



Inserisci vaso json al tuo percorso di classe

o usare java -classpath json.jar ClassName

fare riferimento Questo


-1
2017-12-16 12:21