源码

首页 » 归档 » 源码 » java – 从命令行运行jar时出现MessageBodyProv…

java – 从命令行运行jar时出现MessageBodyProv…


我正在使用Java Jersey框架(使用Maven),并使用IntelliJ作为我的IDE.我遇到过这个运行时异常,只有当我尝试从命令行运行代码时才会发生(使用maven编译然后运行java -jar)但是在IntelliJ中运行时这是奇怪的.

我有一些Java代码会尝试在某个远程URL上进行HTTP GET并尝试将返回的JSON读入某些Lombok 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中指定了jersey-media-json-jackson依赖项:


        org.glassfish.jersey.media
        jersey-media-json-jackson
        2.23

这是我的POJO类,我试图将readEntity()转换为:

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ParseResponse {

   @JsonProperty("id")
   private Integer id;

   ...Other params...
}

就像我之前提到的那样,奇怪的是,只有当我尝试在命令行上运行时才会发生这种情况,但在IntelliJ中运行时没有错误:

mvn clean package
java -jar target/NameOfJar.jar

我错过了一些明显的东西吗?我在网上查看过类似问题的其他人,但没有找到解决方案.

谢谢
IS

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/java-congminglingxingyunxingjarshichuxianmessagebodyprov.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9月 19, 2019 at 01:48 上午

热评文章