2014-09-25 25 views
0

我正在使用JAVA的Web應用程序,並使用了org.json。在項目中進行一些計算,但是當我從localhost運行應用程序時,出現以下錯誤消息。如何在Web應用程序中使用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> 

依賴編輯:全pom.xml的內容

應該做哪些事情來得到這個運行?謝謝。

+0

這應該是足夠的....如果你使用「戰爭」作爲包裝。但是也許在你的POM文件中有一些其他問題。 (提示:發佈整個文件。) – 2014-09-25 12:16:07

+0

何處添加依賴關係? ''節或''節?這是基於模塊的應用程序? – VinayVeluri 2014-09-25 12:16:28

+0

這就是家長pom(我怎麼知道:包裝類型是pom)。真正的事實是在你的網站模塊的郵件中,所以post -that-。 – Gimby 2014-09-25 13:29:32

回答

1

即使添加了dependency

以下後,可能有各種原因,你會得到NoClassDefFoundError是你可以做的就是檢查。

  • 在主pom.xml的<dependencies>部分添加依賴關係。如果您覺得我不需要在Rest --> service --> DAO這樣的應用程序中的服務層中使用JSON庫,那麼請添加<dependencyManagement>部分,並添加out版本的依賴關係 - 您希望使用哪個模塊。

  • 您需要確保您的settings.xml配置正確,足以獲取爲您下載的jar文件。

  • 另一種可能性是refresh您的工作區如果您正在使用某些IDE - eclipse,IntelliJ來更新依賴關係。

  • 您可以檢查.m2 --> repository --> org --> json --> <version>文件夾是否可用。這確認該罐子已下載,並且您可以按照確認的方式打勾點2。

  • 您可以取消存檔war文件並檢查庫中是否將json jar文件添加到您的最終包裝中。這是最後檢查的地方。

  • 您可以使用mvn -U clean install來更新依存關係。

0

我認爲這個問題是你的POM的「包裝」

正常的方式來建立一個Web應用程序是指定包裝的「戰爭」,使Maven會構建一個包含你的代碼和WAR文件依賴JAR。然後將WAR文件部署到Web容器。

但是你正在使用包裝「pom」。

  1. 我假設你意味着你有另一個(孩子)POM文件來構建你的應用程序JAR。

  2. 我也猜測你在使用「jar」作爲POM中的包裝。

  3. 我還假設你正在將JAR部署到Web容器;例如手工或使用一些IDE集成東西。

我覺得這裏的問題是,當你正在部署JAR文件到Web容器,你不需要部署澤西依賴('因爲他們已經在那裏了!),你沒有部署「json.org」JAR文件。

無論如何,你得到異常的原因是Web容器類加載器找不到該JAR文件。如果你在不使用WAR的情況下進行部署,必須將該文件複製到Web容器的類加載器要查看的位置。

相關問題