2016-04-25 6 views
0

Когда я запускаю свой веб-проект из Eclipse на Tomcat 8 с помощью JDK 8, все работает безупречно, но как только я создаю этот проект и развертываю WAR для Tomcat 8 на сервере, я получаю следующая ошибка:IncompatibleClassChangeError при развертывании приложения JAX-RS для Tomcat

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 с консоли, чтобы все было правильно. Следующая проблема была связана с Java на сервере с tomcat, мне пришлось обновить до openJDK1.8 из стандартного Java, который был там установлен, и обновить переменные среды JAVA_HOME и PATH. – user2925656