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, я получаю диалог загрузки файла.

При запуске за пределами Eclipse с Tomcat возникает ошибка:

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

Ответ 1

Нет. Это неправильный способ.. Выполните шаги,

For Classpath reference: Щелкните правой кнопкой мыши по проекту в Eclipse → Buildpath → Настроить путь сборки → Путь сборки Java (левая панель) → Библиотеки (вкладка) → Добавить внешние банки → Выберите банку и выберите ОК.

For Deployment Assembly: Щелкните правой кнопкой мыши на WAR в eclipse- > Buildpath → Настроить путь сборки → Сборка сборки (левая панель) → Добавить → Внешняя файловая система → Добавить → Выберите свою банку → Добавить → Готово.

Это правильный путь! Не забудьте удалить переменную окружения. Это не требуется сейчас.

Попробуйте это. Конечно, это сработает. Попробуйте использовать Maven, это упростит вашу задачу.

Ответ 3

Исключение, которое он сам говорит, все java.lang.ClassNotFoundException: org.json.JSONObject

Вы не добавили необходимый файл jar, который будет иметь класс org.json.JSONObject для вашего classpath.

Вы можете Загрузить его здесь

Ответ 4

Добавьте json jar в свой путь к классам

или используйте java -classpath json.jar ClassName

обратитесь