Jersey 和 Maven 结果 java.lang.NoSuchMethodError
Jersey and Maven results in java.lang.NoSuchMethodError
我刚开始使用 Maven,想更改我当前的 JavaFX8 FXML 应用程序以使用 Maven。作为测试,我正在尝试从 Glassfish 3 上的网络服务 运行ning 中检索国家/地区列表。
当我 运行 程序时,这发生在我的 FXML 控制器中 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
依赖项在您真正想要的之前。
我刚开始使用 Maven,想更改我当前的 JavaFX8 FXML 应用程序以使用 Maven。作为测试,我正在尝试从 Glassfish 3 上的网络服务 运行ning 中检索国家/地区列表。
当我 运行 程序时,这发生在我的 FXML 控制器中 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
依赖项在您真正想要的之前。