姬長信(Redy)

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