2014-09-25 5 views
0

Я работаю над веб-приложением в JAVA, и я использовал org.json. в проекте для некоторых вычислений, но я получаю следующее сообщение об ошибке при запуске приложения из localhost.Как использовать библиотеку Json в веб-приложении

java.lang.NoClassDefFoundError: org/json/JSONObject 

я определил зависимость в pom.xml

<?xml version="1.0" encoding="UTF-8"?> 

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org  /2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.cloudera.oryx</groupId> 
    <artifactId>projectname</artifactId> 
    <version>0.5.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-client</artifactId> 
      <version>1.9</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey.contribs</groupId> 
      <artifactId>jersey-apache-client</artifactId> 
      <version>1.9</version> 
     </dependency> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20140107</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

EDITED: Содержание Полный pom.xml

Какие вещи нужно сделать, чтобы получить это работает? Благодарю.

+0

Этого должно быть достаточно .... если вы используете «войну» в качестве упаковки. Но, возможно, в вашем POM-файле есть и другие проблемы. (Подсказка: опубликуйте весь файл.) –

+0

Где добавлена ​​зависимость? '' или '' раздел? Это приложение на основе модулей? – VinayVeluri

+0

Это родительский pom (как я знаю: тип упаковки - pom). Настоящая правда заключается в помпе вашего веб-модуля, поэтому post -that-. – Gimby

ответ

1

Там могут быть различные причины, вы получаете NoClassDefFoundError даже после добавления dependency

Ниже приведены проверки вы можете сделать, чтобы получить.

  • Добавить зависимость в <dependencies> части основного pom.xml. Если вам кажется, что я не требую библиотеки JSON на уровне обслуживания в приложении, например Rest --> service --> DAO, тогда добавьте раздел <dependencyManagement> и добавьте зависимость с отсутствующей версией - в которой вам нужен модуль.

  • Вам необходимо убедиться, что ваш settings.xml настроен достаточно правильно, чтобы получить файлы jar, загруженные для вас.

  • Другая возможность: refresh ваше рабочее пространство, если вы используете некоторую среду IDE - eclipse, IntelliJ для обновления зависимостей.

  • Вы можете проверить, есть ли папка .m2 --> repository --> org --> json --> <version> или нет. Это подтверждает, что баночка загружена, и вы можете отметить цифру 2, как подтверждено.

  • Вы можете разблокировать файл войны и проверить в библиотеках, будет ли файл json jar добавлен в вашу окончательную упаковку или нет. Это последнее место для проверки.

  • Вы можете использовать mvn -U clean install для обновления зависимостей.

0

Я думаю, что проблема вашего POM в «упаковка»

Обычный способ построения веб-приложение, чтобы указать на упаковке, как «война», так что Maven будет создать файл WAR, содержащий код и тому зависимых JAR. Затем вы разворачиваете WAR-файл в веб-контейнер.

Но вы используете упаковку «pom».

  1. Я предполагаю, что это означает, что у вас есть еще один (дочерний) POM-файл для создания вашего приложения JAR.

  2. Я также предполагаю, что вы используете «банку» в качестве упаковки в этом POM.

  3. Я также предполагаю, что вы затем развертываете JAR в веб-контейнере; например вручную или с помощью некоторой интеграции IDE.

Я думаю, что проблема здесь заключается в том, что в то время как вы устанавливаете файл JAR в веб-контейнера, и вам не нужно развернуть зависимости Джерси ('потому что они уже там !!), вам НЕ развертывают JAR-файл json.org.

Во всяком случае причина, по которой вы получаете исключение, заключается в том, что загрузчик классов контейнера не может найти этот JAR-файл. Если вы развертываете без использования WAR, что-то должно скопировать файл в место, где будет выглядеть загрузчик классов веб-контейнера.

Смежные вопросы