2017-12-22 25 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

あなたは、Mavenを使用している場合:

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

は(なし内部)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> 

をまたcom.sun.xml.bind.xmlHeadersを取得します。しかし、あなたが使用する場合

<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ですが、異なるベンダー/プロバイダから提供されているため、サポートされているマーシャルプロパティのように(実際にはJAXB仕様の一部ではないため)サポートされていません。

関連する問題