2014-04-03 6 views
6

나는이 예제를 따라 이 코드는 다음과 같습니다.MOXY JAXB javax.xml.bind.PropertyException

Exception in thread "main" javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json 
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.setProperty(AbstractUnmarshallerImpl.java:352) 
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.setProperty(UnmarshallerImpl.java:450) 
    at com.example.JavaSEClient.main(JavaSEClient.java:19) 

어떻게 해결할 수 있습니까?

나는 SO 검색과 구글이 답변이 작동하지 않습니다 :

PropertyException when setting Marshaller property with eclipselink.media-type value: application/json JAXB javax.xml.bind.PropertyException

답변

9

당신은 당신의 jaxb.properties 파일은 부트 스트랩하는 데 사용되는 도메인 클래스와 같은 패키지에 있는지 확인해야 JAXBContext이며 EclipseLink MOXy가 클래스 경로에 있습니다.

당신은 메이븐을 사용하는 경우, 다음 jaxb.properties 파일 Foocom.example.Foo라는 패키지에 가정은 다음 위치에서해야한다 :

  • SRC/메인/자원/com/example/foo/jaxb.properties
  • src/main/java/com/example/foo/Foo.class
  • 전체 예를 들어

은 다음을 참조하십시오

+0

감사합니다. 이것은 내 문제를 해결했다. 다른 질문이 있습니다. 제발 도와주세요. 엔티티 필터가 필요하기 때문에 MOXy를 사용하는 REST 저지 (2.7) 서버가 있습니다. 안드로이드에서 REST 클라이언트를 만들고 싶습니다. 잠시 동안 좋은 JBoss RESTEasy-mobile을 시도했지만 Jackson과 MOXy와 Jackson은 MAP 을 사용합니다. 그래서 지금 안드로이드에서 MOXy를 사용하고 싶습니다. 그러나 나는 위선적입니다. 그럴 수있어? 이 문제를 어떻게 해결할 수 있습니까? –

+0

패키지 구조로 힌트를 주셔서 감사합니다. 원본 폴더에 배치하는 것이 훨씬 낫습니다! –

+1

jaxb.properties는 마샬 러 코드가 아닌 _model_과 동일한 파일/패키지 구조에 배치해야합니다. 이 예제에서 'Foo'는 모델이며 마샬 러 데모의 이름이 아닙니다. 'System.out.println (jaxbContext);를 실행하면 정말 (블로그 데모에서했던 것처럼) 디버깅하는 데 도움이됩니다. 이를 실행하고'class org.eclipse.persistence.jaxb.JAXBContext'가 보이지 않는다면 올바른 JAXBContext를로드하지 않을 것입니다. –