java - Jersey 和 Maven 导致 java.lang.NoSuchMethodError

标签 java maven javafx jersey

我刚刚开始使用 Maven,并且想要更改当前的 JavaFX8 FXML 应用程序以与 Maven 配合使用。作为测试,我尝试从 Glassfish 3 上运行的网络服务中检索国家/地区列表。

当我运行程序时,这会发生在我的 FXML Controller 的 initialize() 中:

CountryClientSSL cc = new CountryClientSSL();
cc.setUsernamePassword("username", "password");
ObservableList<Country> olCountries = FXCollections.observableArrayList(cc.findAll());

olCountries.stream().forEach((country) -> {
    System.out.println(country.getName());
});

cc.close();

findAll() 方法:

public List<Country> findAll() throws ClientErrorException {
    WebTarget resource = webTarget;
    resource = resource.path("countries");
    System.out.println(resource.getUri().toString());
    return resource.request(javax.ws.rs.core.MediaType.APPLICATION_XML).get(new GenericType<List<Country>>(){});
}

如果我在浏览器中测试它,URI 看起来很好并且可以使用凭据,但是会引发以下错误:

...
Caused by: 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)
at DA.CountryClientSSL.findAll(CountryClientSSL.java:85)
...

我的 pom.xml 文件具有 Jersey 依赖项:

    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>2.21</version>
    </dependency>

我在这里发现了一个类似的(旧)问题 NoSuchMethodError: MultivaluedMap.addAll in Jersey Client但这并没有给我带来更多帮助。有人可以指出我做错了什么的正确方向吗?

提前致谢!

编辑:结构

src
 |-main
     |-java
          |-classes
          |-DA
          |-GUI (the controllers, still have to rename this)
     |-resources
          |-bundles
          |-fxml
          |-images
          |-jnlp
          |-styles
target
pom.xml

最佳答案

看起来您的类路径有 JAX-RS 1.x 依赖性,如您提到的问题中所述:NoSuchMethodError: MultivaluedMap.addAll in Jersey Client .

您可以运行 mvn dependency:tree 来打印项目的所有(传递)依赖项。然后检查您真正想要的依赖项之前是否存在其他 Jersey 或 javax.ws.rs 依赖项。

关于java - Jersey 和 Maven 导致 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32657861/

相关文章:

java - 我有华为站点工具包错误代码 :10017

在 MOUSE_CLICKED 事件上仅选择圆弧边界的 javafx 代码

javafx - 我怎样才能解决这个问题? JavaFX - 错误的 JPEG 库版本 : library is 80, 调用者期望 70

java - 如何在我的 LibGDX 游戏中分享屏幕截图?

java - antlr 对 pascal 语法的 panic

java - maven 中带有测试阶段的 surefire 插件异常

java - 无法从 wsdl 文件生成 java 代码

java - 我如何在必须安装 Java 或 JavaFX 的 Tizen 移动/平板电脑 Linux 中运行 JavaFX 2.0?

Java 和 Python 在单个 Google App Engine 项目中一起使用

java - 在jrxml中导入自定义类并使用maven插件编译