2016-04-25 110 views
0

當我使用JDK 8在Tomcat 8上從Eclipse運行我的Web項目時,一切都完美無缺,但是一旦構建此項目並將WAR部署到服務器上的Tomcat 8,以下錯誤:當將JAX-RS應用程序部署到Tomcat時,IncompatibleClassChangeError

java.lang.IncompatibleClassChangeError: com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider and com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$Wadl disagree on InnerClasses attribute 

我試過所有的東西,但它仍然無法正常工作。

這裏是我的pom.xml文件:

<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>RestWebService</groupId> 
<artifactId>RestWebService</artifactId> 
<version>0.1.0</version> 
<packaging>war</packaging> 
<build> 
<sourceDirectory>src</sourceDirectory> 
<plugins> 
    <plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.3</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
    </plugin> 
    <plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <warSourceDirectory>WebContent</warSourceDirectory> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
    </configuration> 
    </plugin> 
</plugins> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>asm</groupId> 
     <artifactId>asm</artifactId> 
     <version>3.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-bundle</artifactId> 
     <version>1.19</version> 
    </dependency> 
    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20140107</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.19</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-core</artifactId> 
     <version>1.19</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.5</version> 
    </dependency> 
      <dependency> 
     <groupId>com.microsoft.sqlserver</groupId> 
     <artifactId>sqljdbc4</artifactId> 
     <version>4.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.17.1</version> 
    </dependency> 
</dependencies> 
</project> 

下面是項目中的所有JAR文件的列表:

asm-3.3.1.jar 
jersey-bundle-1.19.jar 
jsr311-api-1.1.1.jar 
json-20140107.jar 
jersey-server-1.19.jar 
jersey-core-1.19.jar 
gson-2.5.jar 
sqljdbc4-4.0.jar 
jersey-json-1.17.1.jar 
jettison-1.1.jar 
jaxb-impl-2.2.3-1.jar 
jaxb-api-2.2.2.jar 
stax-api-1.0-2.jar 
activation-1.1.jar 
jackson-core-asl-1.9.2.jar 
jackson-mapper-asl-1.9.2.jar 
jackson-jaxrs-1.9.2.jar 
jackson-xc-1.9.2.jar 

回答

4

看起來像它與依賴版本中的問題

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.17.1</version> 
</dependency> 

以上應該與所有其他澤西島依賴關係匹配相同的版本。所以只需將其更改爲1.19

+0

嗨,謝謝你的回答,這是對的。對於任何有相同或類似問題的人,這裏有幾件事我不得不做的:我有Eclipse的問題,它不是非常成功的mvn乾淨安裝,我不得不從控制檯手動運行mvn clean install以使其正確。接下來的問題是使用tomcat的服務器上的Java,我必須從標準Ja​​va更新到openJDK1.8,並在那裏安裝並更新環境變量JAVA_HOME和PATH。 – user2925656

相關問題