要添加哪些 Jersey 依赖项以避免 NoClassDefFoundError for jersey.repackaged.com.google.common.collect.Maps

2022-09-03 04:35:46

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

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

你知道我错过了什么依赖关系吗?我已经在我的和球衣中包含了以下球衣文物.version是2.5.1:pom.xml

    <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

您将需要:

<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 库引入您的应用程序。这意味着,即使我们仍然在内部使用它们,您也可以使用这些库的不同版本。这两个库中的类都已分别重新打包,并进行了缩小以减小占用空间。ASM 5现在是球衣服务器核心模块的一部分,对于番石榴,我们创建了一个单独的捆绑模块球衣 - 番石榴,因为这种依赖关系广泛用于多个泽西岛模块。jersey.repackaged.com.google.commonjersey.repackaged.objectweb.asm

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


答案 2

推荐