java - 在 javax.ws.rs.core.MultivaluedMap.addAll 处获取 java.lang.NoSuchMethodError

标签 java nosuchmethoderror

在以下调用期间引发异常

Response response = client().target(rpTarget())
    .path(clusterPath())
    .queryParam("api-version", csmv2ApiVersion())
    .request(MediaType.APPLICATION_JSON)
    .get();

异常的完整堆栈是

java.lang.NoSuchMethodError: javax.ws.rs.core.MultivaluedMap.addAll(Ljava/lang/Object;[Ljava/lang/Object;)V
  at org.glassfish.jersey.client.ClientRequest.accept(ClientRequest.java:335)
  at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:221)
  at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:59)

...

我使用“mvn package”构建我的应用程序 jar,构建输出如下

[INFO] Including javax.ws.rs:javax.ws.rs-api:jar:2.0.1 in the shaded jar.

[INFO] Including org.glassfish.jersey.core:jersey-common:jar:2.19 in the shaded jar.

我似乎使用的是最新版本的javax.ws.rs-api.jar似乎包含 MultivaluedMap.addAll 的定义方法,但我仍然不断收到此异常。

你能告诉我我缺少什么吗?

最佳答案

看起来您在编译时和运行时可能有不同版本的 MultivaluedMap。因此,当使用 Maven 时,您可以针对特定版本的库进行编译,不会出现错误,但根据编译方式,您实际上可能在运行时使用不同的版本(例如,内置于服务器中的版本),而该版本没有此方法,导致异常。检查您的服务器使用的版本,看看该版本与您在 pom.xml 中指定的版本之间是否存在差异。还要检查该依赖项的范围属性,我认为默认是“compile”,它实际上会将库编译到您的 jar 文件中,“provided”不会编译库并期望通过其他方式提供它。

这里需要注意的重要一点是,编译时使用的库版本不一定与运行时使用的版本相同。如果您可以确保服务器上的版本是您想要的版本,而不是拥有两个不同的版本,那么事情会变得更容易。

参见第 2.3 节 here ,它包含有关 glassfish 所需的 javax.ws.rs maven 依赖项的一些信息。

关于java - 在 javax.ws.rs.core.MultivaluedMap.addAll 处获取 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34351347/

相关文章:

java - scala 中的 cogroup 两个 RDD

java - 如何使用服务器套接字在Java中一次监听一个客户端?

java - 如何在 Chrome 证书详细信息中阻止此消息 - "Your connection to example.com is encrypted with obsolete cryptography."?

spring-data-jpa - QueryDSL NoSuchMethodError : jpa. JPQLQuery.from() 错误

java - 如何将分钟转换为小时和分钟 (hh :mm) in java

java - 骰子模拟寻找正确的点

java - JNI 到 Java 异常中的 NoSuchMethodError

初始化OpenSaml时java.lang.NoSuchMethodError : org. slf4j.helpers.Util.report(Ljava/lang/String;)V

java - Maven 和 System.lineSeparator

scala - 使用 Scala 符号文字会导致 NoSuchMethod