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, это упростит вашу задачу.
Ответ 2
Добавьте следующую зависимость
http://mvnrepository.com/artifact/org.json/json/20080701
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20080701</version>
</dependency>
Ответ 3
Исключение, которое он сам говорит, все java.lang.ClassNotFoundException: org.json.JSONObject
Вы не добавили необходимый файл jar, который будет иметь класс org.json.JSONObject
для вашего classpath
.
Вы можете Загрузить его здесь
Ответ 4
Добавьте json jar в свой путь к классам
или используйте java -classpath json.jar ClassName
обратитесь