4

XML スキーマのセットから Java クラスを生成しようとしています。次のバインド ファイルは、スキーマ内の混合コンテンツを処理するために使用されます。

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
 xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
 xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" jaxb:extensionBindingPrefixes="xjc">
  <jaxb:globalBindings generateMixedExtensions="true"/>
</jaxb:bindings>

コード生成は正常に機能しますが、生成されたクラスの 1 つに com.sun.xml.internal.bind.annotation パッケージの @OverrideAnnotationOf があります。このパッケージは rt.jar に含まれていますが、通常の Java コンパイラはそれを見つけることができません (また、sun 内部にあるため、おそらく見つけられないはずです)。

混合コンテンツを処理し、生成されたコードに Sun 内部パッケージの OverrideAnnotationOf を持たないようにする方法はありますか?

4

1 に答える 1

2

Java 6 以降では、Oracle は JRE 内に埋め込まれた JAXB 実装を別のパッケージに移動して、外部JAXB 参照実装との潜在的な衝突を防ぎました。

そのため、クラスは package からpackage にOverrideAnnotationOf移動しました。com.sun.xml.bind.annotationcom.sun.xml.internal.bind.annotation

ただし、埋め込まれた xjc は、com.sun.xml.bind.annotation.OverrideAnnotationOf(!)で注釈が付けられた Java ファイルを生成します。

したがって、Java 7 に同梱されている JAXB 実装は、 で生成された独自の出力を認識しませんgenerateMixedExtensions="true"。オプションを使っても-XDignore.symbol.file

于 2015-04-22T12:35:20.320 に答える