xjc
シェル・スクリプトは、XMLスキーマ・ファイルをコンパイルして、完全注釈付きJavaクラスにする場合に使用します。
形式
xjc [-options] schema file/URL/dir/jar ... [-b bindinfo] ...
options
これは、xjc
コマンド行オプションです。「xjcコマンドのオプション」を参照してください。
schema file/URL/dir/jar
これは、XMLスキーマ・ファイルの場所です。dir
が指定されている場合は、その中にあるすべてのスキーマ・ファイルがコンパイルされます。jar
が指定されている場合は、/META-INF/sun-jaxb.episode
バインディング・ファイルがコンパイルされます。
これは、コンパイル対象となる1つ以上のスキーマ・ファイルを指定します。ディレクトリを指定した場合、xjc
コマンドはすべてのスキーマ・ファイルでそのディレクトリをスキャンし、それらをコンパイルします。
-b bindinfo
バインディング・ファイルの場所です。
注意:
dir
が指定されている場合は、その中にあるすべてのスキーマ・ファイルがコンパイルされます。jar
が指定されている場合は、/META-INF/sun-jaxb.episode
バインディング・ファイルがコンパイルされます。
説明
プラットフォームのbin
ディレクトリにある適切なxjc
シェル・スクリプトを使用して、バインディング・コンパイラを起動します。バインディング・コンパイラを実行するAntタスクも用意されています。
xjcコマンドのオプション
-nv
このオプションは、厳密なスキーマ検証を無効にします。これは、バインディング・コンパイラが検証を一切実行しないということではなく、より厳密でない検証を実行するということです。
デフォルトでは、xjc
バインディング・コンパイラは、ソース・スキーマを処理する前に厳密な検証を実行します。
-extension
このオプションは、ベンダー拡張を使用できるようにします。デフォルトでは、xjc
バインディング・コンパイラは、JAXB仕様の互換性規則に関する章および付録E.2で説明されている規則を厳密に強制します。付録E.2では、JAXB v1.0で完全にはサポートされていない一連のW3C XMLスキーマ機能が定義されています。場合によっては、このスイッチで有効になる-extension
モードでそれらの機能が使用できる場合があります。また、デフォルトの厳密なモードでは、仕様に定義されているバインディング・カスタマイズのみの使用に制限されます。-extension
スイッチを使用すると、JAXB Vendor Extensionを使用できます。
-b file/dir
このオプションは、処理対象となる1つ以上の外部バインディング・ファイルを指定します。バインディング・ファイルごとに-b
スイッチを指定する必要があります。外部バインディング・ファイルの構文には柔軟性があります。複数のスキーマに対応したカスタマイズが含まれる単一のバインディング・ファイルを保持することも、そのカスタマイズを複数のバインディング・ファイルに分割することもできます。例:
xjc schema1.xsd schema2.xsd schema3.xsd -b bindings123.xjb
xjc schema1.xsd schema2.xsd schema3.xsd -b bindings1.xjb -b bindings2.xjb -b bindings3.xjb
.
さらに、コマンド行ではスキーマ・ファイルおよびバインディング・ファイルの順序は問いません。
-d dir
このオプションは、デフォルトのかわりに使用する出力ディレクトリを指定します。出力ディレクトリは、すでに存在している必要があります。xjc
バインディング・コンパイラでは作成されません。
デフォルトでは、xjc
バインディング・コンパイラは、Javaコンテンツ・クラスを現在のディレクトリに生成します。
-p pkg
このコマンド行オプションを使用してターゲット・パッケージを指定した場合は、その指定によって、パッケージ名に対するすべてのバインディング・カスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムがオーバーライドされます。
-m name
このオプションは、指定のJavaモジュール名を使用してmodule-info.java
を生成します。
-httpproxy proxy
これは、[user[:password]@]proxyHost[:proxyPort]の形式でHTTPまたはHTTPSプロキシを指定します。従来の-host
および-port
オプションは、下位互換性を保つためにリファレンス実装でもサポートされていますが、非推奨になりました。このオプションで指定されたパスワードは、topコマンドを使用する他のユーザーも表示できる引数です。セキュリティを高めるには、-httpproxyfile
オプションを使用してください。
-httpproxyfile file
このオプションは、ファイルを使用してHTTPまたはHTTPSプロキシを指定します。これは、-httpproxy
オプションと同じ形式ですが、このファイル内に指定されたパスワードを他のユーザーが表示することはできません。
-classpath arg
このオプションは、jxb:javaType
およびxjc:superClass
カスタマイズで使用されるクライアント・アプリケーションのクラス・ファイルの検索場所を指定します。
-catalog file
このオプションは、外部エンティティ参照を解決するカタログ・ファイルを指定します。TR9401、XCatalogおよびOASIS XML Catalog形式をサポートします。
-readOnly
このオプションは、xjc
バインディング・コンパイラが生成されたJavaソースに読取り専用マークを付けるように強制します。
デフォルトでは、xjc
バインディング・コンパイラは、生成するJavaソース・ファイルを書き込みから保護しません。
-npa
このオプションは、パッケージ・レベルの注釈を**/package-info.java
に生成することを抑制します。このスイッチを使用して生成するコードでは、これらの注釈がほかの生成済みクラスに内部化されます。
-no-header
このオプションは、いくつかのメモとタイムスタンプを含むファイル・ヘッダー・コメントの生成を抑制します。このオプションを使用すると、生成されたコードとdiff
コマンドとの互換性が高くなります。
-target [2.0|2.1]
このオプションは、指定されたJAXWS仕様のバージョンに従ってコードを生成します。デフォルトは2.2です。使用できる値は、2.0
、2.1
および2.2
です。
-encoding encoding
このオプションは、生成されるソース・ファイルの文字エンコーディングを指定します。
-enableIntrospection
このオプションを使用すると、BeanイントロスペクションAPIを有効にするブール型のgetterおよびsetterを正しく生成できます。
-disableXmlSecurity
このオプションは、XML文書の解析時のXMLセキュリティ機能を無効にします。
-contentForWildcard
このオプションは、複数のxs:any
導出要素を持つタイプのコンテンツ・プロパティを生成します。
-xmlschema
このオプションは、入力スキーマをW3C XMLスキーマとして処理します(デフォルト)。このスイッチを指定しない場合、入力スキーマはW3C XMLスキーマと同様に処理されます。
-dtd
このオプションは、入力スキーマをXML DTDとして処理します(試験的でサポート対象外)。RELAX NG
スキーマのサポートはJAXB Vendor Extensionとして提供されています。
-wsdl
このオプションは、入力をWSDLとして処理し、その内部のスキーマをコンパイルします(試験的でサポート対象外)。
-verbose
このオプションは、情報メッセージを出力したりエラーの発生時にスタック・トレースを表示するなど、詳細出力を追加で生成します。
-quiet
このオプションは、進捗情報や警告など、コンパイラの出力を抑制します。
-help
このオプションは、コンパイラ・スイッチの簡単なサマリーを表示します。
-version
このオプションは、コンパイラのバージョン情報を表示します。
-fullversion
このオプションは、フル・バージョン情報を表示します。
xjcコマンドの拡張機能
-Xpropertyaccessors
このオプションでは、生成されたクラスに対してFIELD
ではなく、XmlAccessType
PROPERTY
を使用します。
-mark-generated
このオプションは、生成されたコードに注釈@javax.annotation.Generated
を付けます。
-Xinject-code
このオプションは、生成されたコードに指定のJavaコードを挿入します。
-episode file
このオプションは、個々のコンパイルごとに指定されたエピソード・ファイルを生成します。
-XLocator
このオプションにより、生成されたコードでは、アンマーシャリング後にJava Beanインスタンスに含まれるソースXMLに関するSimple API for XML (SAX) Locator情報が公開されます。
-Xsync-methods
このオプションは、生成されたすべてのメソッド・シグニチャにsynchronized
キーワードが含められます。
xjcコマンドの非推奨オプションおよび削除されたオプション
-host
および-port
これらのオプションは、-httpproxy
オプションで置き換えられました。これらのオプションは、下位互換性を確保する目的でサポートされていますが、ドキュメントには記載されず、将来のリリースで削除される可能性があります。
-use-runtime
JAXB 2.0仕様で移植性のあるランタイム環境が規定されたため、JAXBリファレンス実装が**/impl/runtime
パッケージを生成する必要がなくなりました。このため、このスイッチは不要となり、削除されました。
-source
-source
互換性スイッチは、JAXB 2.0の最初のEarly Access版で導入されました。このスイッチは、JAXB 2.0の今後のリリースから削除されます。1.0.nコードを生成する必要がある場合は、1.0.nコード・ベースのインストールを使用してください。
xjcコマンドのコンパイラの制限事項
通常は、関連するすべてのスキーマを、同じバインディング・コンパイラ・スイッチを指定して1つの単位としてコンパイルするのが最も安全です。xjc
コマンドを実行するときは、次のリストに示す制限に注意してください。このような問題のほとんどは、xjc
コマンドを複数回呼び出して複数のスキーマをコンパイルする場合にのみ当てはまります。
複数のスキーマを同時にコンパイルする場合は、ターゲットのJavaパッケージ名に次の優先順位の規則が適用されることに注意してください。
-p
オプションがもっとも優先されます。
jaxb:package
のカスタマイズがある場合。
targetNamespace
が宣言されている場合は、仕様に定義されているJavaパッケージ名のアルゴリズムにtargetNamespace
を適用します。
targetNamespace
が宣言されていない場合は、generated
という名前のハードコードされたパッケージを使用します。
ネームスペースごとに複数のjaxb:schemaBindings
を持つことができないため、同じターゲット・ネームスペースにある2つのスキーマを異なるJavaパッケージにコンパイルすることはできません。
同じJavaパッケージにコンパイルされるスキーマはすべて、同時にXJCバインディング・コンパイラに送信される必要があります。個別にコンパイルできないため、想定したとおりに動作しません。
複数のスキーマ・ファイルにまたがる要素置換グループは、同時にコンパイルされる必要があります。