要添加什么Jersey依赖以避免jersey.repackaged.com.google.common.collect.Maps的NoClassDefFoundError

时间:2014-02-27 13:01:04

标签: java jersey

我正在尝试运行一个扩展JerseyTest的测试但是在运行时我得到了一个:

java.lang.NoClassDefFoundError: jersey/repackaged/com/google/common/collect/Maps

知道我缺少什么依赖吗?我在pom.xml和jersey中包含了以下球衣文物。版本是2.5.1:

    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>${jersey.version}</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>${jersey.version}</version>
    </dependency>        

    <dependency>
        <groupId>com.sun.jersey.jersey-test-framework</groupId>
        <artifactId>jersey-test-framework-core</artifactId>
        <version>1.18</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
        <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
        <version>2.6</version>
        <scope>test</scope>
    </dependency>

1 个答案:

答案 0 :(得分:23)

你需要:

<dependency>
  <groupId>org.glassfish.jersey.bundles.repackaged</groupId>
  <artifactId>jersey-guava</artifactId>
  <version>2.6</version>
</dependency>

来自http://blog.dejavu.sk/2014/02/21/jersey-2-6-has-been-released-new-and-noteworthy/

  

泽西岛,从JAX-RS 2.0版本2.6和JAX-RS 1.1版本1.18.1开始,不再向您的应用程序传递Guava和ASM库。这意味着即使我们仍然在内部使用它们,您也可以使用这些库的不同版本。这两个库中的类已分别重新打包,jersey.repackaged.com.google.commonjersey.repackaged.objectweb.asm,并缩小以减少占用空间。 ASM 5现在是jersey-server核心模块的一部分,对于Guava,我们创建了一个单独的bundle模块jersey-guava,因为这个依赖项被广泛用于多个Jersey模块。

您正在使用泽西 2.6 jersey-test-framework-provider-grizzly2