如何在Web应用程序中使用Json库

时间:2014-09-25 12:12:48

标签: java json web-applications

我正在使用JAVA中的Web应用程序,我使用了org.json。在项目中进行一些计算,但是当我从localhost运行应用程序时,我收到以下错误消息。

   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>

已编辑:完整的Pom.xml内容

要让它运行还有什么其他的事情要做?感谢。

2 个答案:

答案 0 :(得分:1)

可能有多种原因,即使在添加NoClassDefFoundError

后您也会获得dependency

以下是您可以做的检查。

  • 在主pom.xml的<dependencies>部分添加依赖项。如果您觉得我在Rest --> service --> DAO之类的应用程序中不需要服务层中的JSON库,那么请添加<dependencyManagement>部分并添加具有out版本的依赖项 - 其中包含您想要的模块。

  • 您需要确保settings.xml配置正确,以便为您下载jar文件。

  • 如果您使用某些IDE - eclipse,IntelliJ来更新依赖项,则另一种可能性是refresh您的工作区。

  • 您可以检查.m2 --> repository --> org --> json --> <version>文件夹是否可用。这确认了jar的下载,你可以确认点2。

  • 您可以取消归档war文件并检查库是否将json jar文件添加到最终包装中。这是最后检查的地方。

  • 您可以使用mvn -U clean install更新相关性。

答案 1 :(得分:0)

我认为问题是你的POM&#34;包装&#34;

构建webapp的正常方法是将包装指定为&#34; war&#34;这样Maven就会构建一个包含代码和依赖JAR的WAR文件。然后,将WAR文件部署到Web容器。

但你正在使用包装&#34; pom&#34;。

  1. 我假设这意味着您已经有另一个(子)POM文件来构建您的应用程序JAR。

  2. 我也猜测你正在使用&#34; jar&#34;作为那个POM的包装。

  3. 我还假设您正在将JAR部署到Web容器;例如手工或使用一些IDE集成东西。

  4. 我认为这里的问题是,当您将JAR文件部署到Web容器时,并且您不需要部署Jersey依赖项(&#39;因为它们已经存在!!),你没有部署&#34; json.org&#34; JAR文件。

    无论如何,您获得异常的原因是Web容器类加载器无法找到该JAR文件。如果您在不使用WAR的情况下进行部署,某些内容必须将文件复制到Web容器的类加载器所在的位置。