2016-04-25 89 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

相关问题