web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:org / json / JSONObject

Eclipse IDEを使用しています。サーブレットを作成しています。サーブレットはhtmlファイルから値を受け取り、それに応じてJSON応答を返す必要があります。

私の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());}  
    }

このサーブレットをEclipseで実行すると、ファイルのダウンロードダイアログが表示されます。

Tomcatを使用してEclipseの外部で実行すると、エラーが発生します。

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)

Server1.doPost(Server1.Java:25)という行は、

JSONObject json = new JSONObject();

Org.json.jarをビルドパスに追加し、Properties->Configure build path->Deployment Assemblyのデプロイメントパスに追加しました。

23
HitchHiker

いいえ。適切な方法ではありません。手順を参照してください。

For Classpath reference: Eclipseでプロジェクトを右クリック->ビルドパス->ビルドパスの設定-> Javaビルドパス(左ペイン)->ライブラリ(タブ)->外部JARの追加-> jarの選択OKを選択します。

For Deployment Assembly: EclipseでWARを右クリック->ビルドパス->ビルドパスの構成->デプロイメントアセンブリ(左ペイン)->追加->外部ファイルシステム->追加-> jarの選択->追加->完了。

これが適切な方法です!環境変数を削除することを忘れないでください。現在は必要ありません。

これを試して。きっと動作します。 Mavenを使用してみると、タスクが簡単になります。

28
Jaya Ananthram

次の依存関係を追加してください http://mvnrepository.com/artifact/org.json/json/20080701

<dependency>
   <groupId>org.json</groupId>
   <artifactId>json</artifactId>
   <version>20080701</version>
</dependency>
22
Raghu K Nair

例外はそれがすべてそれを言うJava.lang.ClassNotFoundException: org.json.JSONObject

必要なjarファイルを追加していないため、org.json.JSONObjectクラスをclasspathに。

ここからダウンロード

1
gprathour