一尘不染

java.lang.NoClassDefFoundError:org / json / JSONObject

json

我正在使用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->Deploymentassembly


阅读 874

收藏
2020-07-27

共1个答案

一尘不染

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

For Classpath reference: 右键单击Eclipse中的项目-> Buildpath->配置构建路径->
Java构建路径(左窗格)-> Libraries(Tab)->添加外部Jars->选择您的jar并选择OK。

For Deployment Assembly:
右键单击Eclipse中的WAR->构建路径->配置构建路径->部署程序集(左窗格)->添加->外部文件系统->添加->选择jar->添加->完成。

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

试试这个。当然可以。尝试使用Maven,它将简化您的任务。

2020-07-27