我正在使用Java Jersey框架(使用Maven),並使用IntelliJ作爲我的IDE。我遇到了這種運行時異常,只有當我嘗試從命令行運行代碼(使用maven編譯,然後使用java -jar)時纔會發生,但在IntelliJ中運行時卻不是這樣,這很奇怪。MessageBodyProviderNotFoundException從命令行運行jar時
我有一些Java代碼,將努力使一個HTTP GET一些遠程URL,並嘗試讀取返回的JSON到一些龍目POJO:
String targetUrl = "some valid URL";
WebTarget webTarget = client.target(targetUrl);
Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE).get();
ParseResponse parseResponse = response.readEntity(ParseResponse.class);
我不知道爲什麼,但是當它擊中一個具有「readEntity()」方法,即最後一行,我會得到下面的錯誤:
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=text/json; charset=utf-8
這很奇怪,因爲我肯定在我的pom.xml指定的球衣,媒體JSON - 傑克遜依賴:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.23</version>
</dependency>
而這正是我試圖readEntity()到我的POJO類:
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ParseResponse {
@JsonProperty("id")
private Integer id;
...Other params...
}
就像我之前提到的,奇怪的是,當我嘗試在命令行中運行這只是發生像這樣但在IntelliJ運行時沒有錯誤:
mvn clean package
java -jar target/NameOfJar.jar
我在這裏錯過了一些明顯的東西嗎?我在網上查看過類似問題的其他人,但尚未找到解決方案。
感謝 IS
Jersey + Grizzly + Moxy,這個作品完美! – Alexandre