Java ClassNotFoundException:com.sun.jersey.core.util.Features和Properties

Java ClassNotFoundException:com.sun.jersey.core.util.Features和Properties,java,maven,jersey,classnotfoundexception,Java,Maven,Jersey,Classnotfoundexception,我正在创建一个简单的REST应用程序,但是我得到了类com.sun.jersey.core.util.FeaturesAndProperties的ClassNotFoundException,它是jersey-core的一部分。看起来像是我在这里添加的泽西岛依赖项中的冲突,但我无法回避它 Pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0

我正在创建一个简单的REST应用程序,但是我得到了类
com.sun.jersey.core.util.FeaturesAndProperties的
ClassNotFoundException
,它是
jersey-core
的一部分。看起来像是我在这里添加的泽西岛依赖项中的冲突,但我无法回避它

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>

4.0.0
com.rest.example
再示例2
战争
0.0.1-快照
RESTExample2 Maven Webapp
http://maven.apache.org
泽西岛
泽西服务器
1.17.1
泽西岛
泽西servlet
1.17.1
泽西岛
泽西json
1.17.1
javax.ws.rs
javax.ws.rs-api
2
泽西岛
球衣核心
1.17.1
再示例2

编辑:根据维护相同版本的JAX-RS和Jersey的建议,我修改了依赖项,如下所示,一切正常

<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>

org.glassfish.jersey.containers
jersey容器servlet
2.23.2
org.glassfish.jersey.core
泽西岛客户
2.23.2
javax.ws.rs
javax.ws.rs-api
2
此外,web.xml也进行了更改,以反映新泽西servlet类

<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>

泽西塞尔维特酒店
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.example.rest
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
泽西塞尔维特酒店
/休息/*

您不能混合使用JAX-RS/Jersey版本

Jersey版本1是JAX-RS 1的参考实现。Jersey版本1使用com.sun.Jersey组/包前缀。 Jersey版本2是JAX-RS 2的参考实现。Jersey版本2使用org.glassfish.Jersey组/包前缀


如果可能,请使用JAX-RS/Jersey版本2。

这是我的第一个猜测。我现在正在研究它并更新我的web.xml。我会相应地更新我的帖子。可能是重复的