Java Jersey 프레임 워크 (Maven 사용)를 사용 중이고 IntelliJ를 IDE로 사용하고 있습니다. 이상한 IntelliJ 내에서 실행될 때만 maven을 사용하여 컴파일하고 java -jar를 사용하여 명령 줄에서 코드를 실행하려고 할 때만 발생하는이 런타임 예외가 발생했습니다. MessageBodyProviderNotFoundException 명령 줄에서 jar를 실행하는 중
좀 롬복 POJO로 반환 된 JSON을 읽을 일부 원격 URL에서 HTTP GET을 만들려고 시도하는 몇 가지 자바 코드가 있습니다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
나는 확실히 저지 미디어 - JSON - 잭슨 의존성 내 pom.xml 파일에 지정된 때문에이이 이상하다 :
(210)<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
내가 여기에서 명백한 것을 놓쳤습니까? 이 온라인 같은 비슷한 문제를 가진 다른 사람들을 보았지만 해결책을 찾지 못했습니다.
감사 당신이 jersey-media-json-jackson
단지 내부를 보면 당신은이 파일의
META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable
내용의 이름을 구현하는 클래스의 하나의 완전한 이름이어야합니다 파일을 볼 수
저지 + 그리즐리 + Moxy 그리고 이것은 완벽하게 작동합니다! – Alexandre