【问题标题】:java.lang.NoClassDefFoundError: org/json/JSONObject [duplicate]java.lang.NoClassDefFoundError:org/json/JSONObject [重复]
【发布时间】:2015-02-14 18:09:59
【问题描述】:

我正在使用 Eclipse IDE 并且正在编写一个 servlet。 servlet 应该接受来自 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 中运行这个 servlet 时,我会看到一个文件下载对话框。

当使用 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 中的部署路径中

【问题讨论】:

  • 希望以下链接能帮助到stackoverflow.com/questions/14657585/…
  • 只检查你的库(org.json.jar)是否在部署位置生成。根据您的 cmets,您已在类路径和部署程序集中添加了所需的 jar,因此它应该在部署位置生成。它在部署位置可用吗?
  • 请提供有关如何在 Tomcat 中运行应用程序的更多详细信息。例如,如果您从 Eclipse 导出 WAR 并在 Tomcat 中手动部署,则应检查 JAR 是否正确导出到 WAR 中的 /lib 文件夹。
  • @sankar 我已经参考了您建议的链接并添加了部署路径,但这并没有解决我的问题
  • @JayaAnanthram 我检查了部署位置n它在那里可用

标签: java json servlets


【解决方案1】:

不。。这不是正确的方法。参考步骤,

For Classpath reference: 在 Eclipse 中右键单击项目 -> Buildpath -> Configure Build path -> Java Build Path (left Pane) -> Libraries(Tab) -> Add External Jars -> 选择您的 jar 并选择 OK。

For Deployment Assembly: 在eclipse中右键WAR-> Buildpath -> Configure Build path -> Deployment Assembly (left Pane) -> Add -> External file system -> Add -> Select your jar -> Add -> Finish .

这是正确的方法!不要忘记删除环境变量。现在不需要了。

试试这个。肯定会奏效的。尝试使用 Maven,它会简化你的任务。

【讨论】:

    【解决方案2】:

    请添加以下依赖 http://mvnrepository.com/artifact/org.json/json/20080701

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

    【讨论】:

      【解决方案3】:

      Exception 它自己说明了一切java.lang.ClassNotFoundException: org.json.JSONObject

      您尚未将具有 org.json.JSONObject 类的必要 jar 文件添加到您的 classpath

      你可以Download it From Here

      【讨论】:

        【解决方案4】:

        json jar 添加到您的类路径

        或使用java -classpath json.jar ClassName

        参考this

        【讨论】:

        • 我通过在环境变量中编辑它在类路径中添加了 jar 文件。就是这样,对吧?
        猜你喜欢
        • 1970-01-01
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        • 2016-12-01
        • 2015-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多