运行我的项目时发生java.lang.NoClassDefFoundError错误

运行我的项目时发生java.lang.NoClassDefFoundError错误,java,maven,jax-ws,jax-rs,jersey-client,Java,Maven,Jax Ws,Jax Rs,Jersey Client,我一直在努力让它发挥作用,我想我需要一些帮助。我正在从事一个Java项目,其中pom.xml有一系列依赖项,其中一些依赖项本身间接依赖于这个jar: com.sun.jersey:jersey核心:1.17.1如下: <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.0.1</

我一直在努力让它发挥作用,我想我需要一些帮助。我正在从事一个Java项目,其中pom.xml有一系列依赖项,其中一些依赖项本身间接依赖于这个jar:
com.sun.jersey:jersey核心:1.17.1
如下:

<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.0.1</version>
</dependency>
我试图通过检查依赖关系树将
com.sun.jersey:jersey core:1.17.1
从包含它的依赖关系中排除,从而解决这个问题

<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-client</artifactId>
  <version>1.0.1</version>
  <scope>test</scope>
  <exclusions>
    <exclusion>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
    </exclusion>
  </exclusions>
</dependency> 

似乎需要jersey core,但如何解决这个问题呢?

jersey是JAX-RS的参考实现,因此您不需要最新版本的JAX-RS API(
javax.ws.RS:javax.ws.RS API:2.0
),而需要最新版本的jersey,即2.8(请参阅).

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

  • Jersey
    version1是JAX-RS 1的参考实现
    Jersey
    version1使用
    com.sun.Jersey
    group/package前缀

  • Jersey
    version2是JAX-RS 2的参考实现
    Jersey
    version2使用
    org.glassfish.Jersey
    group/package前缀

如果您的类路径上同时有两个Jersey版本或两个JAX-RS版本,那么您将得到大量的
NoClassDefFoundError
NoSuchMethodError
或类似内容


如果可能的话,使用JAX-RS/
Jersey
版本2

对我来说,这实际上意味着我在某种程度上混合了东西,并且正在使用

$ mvn dependency:list | grep jersey
[INFO]    com.sun.jersey:jersey-client:jar:1.11:compile
[INFO]    com.sun.jersey:jersey-core:jar:1.0.2:compile
(泽西岛1.x内的冲突)

    java.lang.NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties
at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.7.0_51]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2531) ~[na:1.7.0_51]
at java.lang.Class.getDeclaredMethods(Class.java:1855) ~[na:1.7.0_51]
at com.google.inject.internal.ProviderMethodsModule.getProviderMethods
    (ProviderMethodsModule.java:81) ~[guice-3.0.jar:na]
at com.google.inject.internal.ProviderMethodsModule.configure
    (ProviderMethodsModule.java:73) ~[guice-3.0.jar:na]
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) 
    ~[guice-3.0.jar:na]
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:232)
    ~[guice-3.0.jar:na]
at com.google.inject.spi.Elements.getElements(Elements.java:101) ~[guice-3.0.jar:na]
at com.google.inject.spi.Elements.getElements(Elements.java:92) ~[guice-3.0.jar:na]
$ mvn dependency:list | grep jersey
[INFO]    com.sun.jersey:jersey-client:jar:1.11:compile
[INFO]    com.sun.jersey:jersey-core:jar:1.0.2:compile