我正在使用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