2017-12-22 3 views
0

나는 재산이 com.sun.xml.bind.xmlHeaders으로 묘사되는 documentation of JAXB 2.2.11에 관하여 혼동한다. 그러나 나는 그것을 사용하려고 시도 할 때 javax.xml.bind.PropertyException: name: com.sun.xml.bind.xmlHeaders을 얻는다. jaxb 문서화 된 com.sun.xml.bind.xmlHeaders 등록 정보가 인식되지 않지만 "내부"등록 정보가하는 이유는 무엇입니까?

나는 com.sun.xml. internal .bind.xmlHeaders 그래도 작동하는 것을 발견했다.

제 질문은 실제로 이것의 근거에 관한 것입니다. 잘못된 문서를보고 있습니까? "내부"는 어디에서 오는 것입니까?

public static void main(String[] args) throws JAXBException { 
    MyElement myxml = new MyElement(); 
    JAXBContext context = JAXBContext.newInstance(MyElement.class); 
    Marshaller marshaller = context.createMarshaller(); 
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 

    marshaller.setProperty("com.sun.xml.bind.xmlHeaders",""); 
    //marshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders","<DOCTYPE>"); 



    marshaller.marshal(myxml, System.out); 
} 

답변

0

JAXB의 올바른 구현이 클래스 경로에 있는지 확인하십시오. JDK와 함께 제공되는 것과는 별도로 선택할 수있는 몇 가지 "참조 구현"이 있습니다.

  • 특성 : com.sun.xml.internal.bind.xmlHeaders
    • JDK 8 버전
    • javax.xml.bind:jaxb-api:2.2.11
  • 특성 : com.sun.xml.bind.xmlHeaders
    • org.glassfish.jaxb:jaxb-runtime:2.2.11
    • com.sun.xmlbind:jaxb-core:2.2.11 플러스 com.sun.xmlbind:jaxb-impl:2.2.11

당신은 받는다는을 사용하는 경우

<dependency> 
    <groupId>org.glassfish.jaxb</groupId> 
    <artifactId>jaxb-runtime</artifactId> 
    <version>2.2.11</version> 
</dependency> 

는 (아무 내부) com.sun.xml.bind.xmlHeaders를 지원하는 버전을 제공합니다.

당신이 사용하거나하는 경우 : 당신은 또한 com.sun.xml.bind.xmlHeaders을 얻을

<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-core</artifactId> 
    <version>2.2.11</version> 
</dependency> 

<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.2.11</version> 
</dependency> 

. 그러나 당신이 사용하는 경우

<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.2.11</version> 
</dependency> 

당신은 단지 com.sun.xml.internal.bind.xmlHeaders를 얻는다.

모두가 JAXB 2.2.11이지만 다른 공급 업체/제공 업체에서 지원되므로 marshaller 속성이 지원되는 것과 다릅니다 (일부는 실제로 JAXB 사양의 일부가 아니기 때문에).

관련 문제