2016-08-25 1 views
3

単純なRESTアプリケーションを作成していますが、jersey-coreの一部であるcom.sun.jersey.core.util.FeaturesAndPropertiesクラスのClassNotFoundExceptionがあります。私がここに追加したジャージーの依​​存関係の矛盾のように見えますが、私はそれを回避することができません。ClassNotFoundException:com.sun.jersey.core.util.FeaturesAndProperties

の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.rest.example</groupId> 
<artifactId>RESTExample2</artifactId> 
<packaging>war</packaging> 
<version>0.0.1-SNAPSHOT</version> 
<name>RESTExample2 Maven Webapp</name> 
<url>http://maven.apache.org</url> 
<dependencies> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.17.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-servlet</artifactId> 
     <version>1.17.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.17.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-core</artifactId> 
     <version>1.17.1</version> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>RESTExample2</finalName> 
</build> 

EDIT:JAX-RSとジャージーの同じバージョンを維持するために提案した後、次のように私は依存関係を変更し、それはすべて正常に動作します!

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet</artifactId> 
     <version>2.23.2</version> 
    </dependency> 
    <!-- Required only when you are using JAX-RS Client --> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.23.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0</version> 
    </dependency> 
</dependencies> 

さらに、新しいjersey-servletクラスを反映するようにweb.xmlが変更されました。

<servlet> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <servlet-class> 
       org.glassfish.jersey.servlet.ServletContainer 
    </servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.example.rest</param-value> 
    </init-param> 
    <init-param> 
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
    <param-value>true</param-value> 
</init-param> 

    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
+0

の可能性のある重複場合JAX-RSのリファレンス実装2ジャージーバージョン2はorg.glassfish.jerseyグループ/パッケージ接頭

を使用しています私のプロジェクトを実行しているときにjava.lang.NoClassDefFoundErrorエラーが発生しました](https://stackoverflow.com/questions/23521647/java-lang-noclassdeffounderror-error-when-running-my-project) – rogerdpack

答えて

1

あなたは混在させることはできませんJAX-RS /ジャージーバージョン

ジャージーバージョン1は、JAX-RS 1.ジャージーバージョン1 com.sun.jerseyグループ/パッケージ接頭辞を使用するためのリファレンス実装です。 ジャージーバージョン2は、[可能な使用JAX-RS /ジャージーバージョン2

+0

これは私の最初の推測でした。私は今、私のweb.xmlを更新しています。私はそれに応じて自分の投稿を更新します。 – shark1608

+0

変更が反映されました。ありがとう! – shark1608