簡體   English   中英

Jersey和Maven結果為java.lang.NoSuchMethodError

[英]Jersey and Maven results in java.lang.NoSuchMethodError

我剛剛開始使用Maven,並想更改當前的JavaFX8 FXML應用程序以與Maven一起使用。 作為測試,我試圖從在Glassfish 3上運行的Web服務中檢索國家列表。

當我運行程序時,這發生在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>

在Jersey客戶端中的NoSuchMethodError:MultivaluedMap.addAll處發現了一個類似的(舊)問題但並沒有進一步幫助我。 有人可以指出我在做錯事情的正確方向嗎?

提前致謝!

編輯:結構

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依賴性,如您提到的問題所述: Jersey Client中的NoSuchMethodError:MultivaluedMap.addAll

您可以運行mvndependency dependency:tree來打印項目的所有(傳遞)依賴項。 然后檢查在您真正想要的依賴項之前是否還有其他Jersey或javax.ws.rs依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM