내 REST 응용 프로그램 (GlassFish 4.1.2)에서 POJO를 JSON으로 변환하고 다시 되돌리려합니다. 모든 예제는보기 쉽게하지만 뭔가를 놓치고 있습니다. 여기 MOXyJsonProvider가 작동하지 않습니다.
내 응용 프로그램입니다 :@ApplicationPath("/")
public class RootApp extends Application {
@Override
public Set<Class<?>> getClasses() {
HashSet set = new HashSet<Class<?>>();
set.add(HelloWorld.class);
return set;
}
@Override
public Set<Object> getSingletons() {
HashSet set = new HashSet<Object>();
MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider();
moxyJsonProvider.setFormattedOutput(true);
set.add(moxyJsonProvider);
return set;
}
}
그리고 여기에 자원이다
@Path("helloworld")
public class HelloWorld {
private static int counter = 1;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getInevitableMessage() {
JsonHello hj = new JsonHello("Hello World", counter++);
return Response.ok(hj).build();
}
}
그리고 마지막으로하고 이상은 JSON과에서 변환 할 수있는 POJO입니다 :
public class JsonHello {
private int count;
private String message;
public JsonHello(String message, int count) {
this.message = message;
this.count = count;
}
public int count() { return count; }
public void count(int value) { count = value; }
public String message() { return message; }
public void message(String value) { message = value; }
}
이 thread에서 태그가 지정된 답변을 언급하고 있습니다. "/ helloworld"에 액세스하려고하면 다음 예외가 발생합니다.
org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper
이 응용 프로그램은 리소스가 문자열을 반환하는 경우에만 작동합니다. 글래스 피시가 데코레이터를 통해 애플리케이션을 설정하게하기 때문에 web.xml 파일에는 아무 것도 없습니다.
내가 여기에 무엇을 놓치고 있는지 알 수 있습니까?
종속성은 어떻게 처리합니까? 메이븐? 그렇다면 어떤 의존성을 사용하고 있습니까? 항아리를 수동으로 추가 하시겠습니까? 그렇다면 어떤 항아리를 사용하고 있습니까? 어떤 버전을 사용하고 있습니까? Glassfish의 어떤 버전을 사용하고 있습니까? 이 질문들 각각에 대답하고, 의견 (코멘트가 아님)을 편집하십시오 –
@peeskillet이 프로젝트는 Idea 2017.1에서 생성되었으며 GlassFish 4.1.2를 사용합니다. Ant 또는 Maven이 아닌 IDE의 빌드 시스템을 사용합니다. 라이브러리는 수동으로 가져오고 Jackson 2.8.4를 사용하고 있습니다. 라이브러리에 "제공됨"(즉, 이미 GlassFish의 일부 임) 대 응용 프로그램과 함께 패키징되어 있으며 문제 일 수 있음을 IDE에 알리는 방법을 모르겠습니다. – AlanObject
Jackson을 사용하는 경우 MOXy를 등록하려는 이유는 무엇입니까? –