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-runtimeJAXB 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バインディング・コンパイラに送信される必要があります。個別にコンパイルできないため、想定したとおりに動作しません。
複数のスキーマ・ファイルにまたがる要素置換グループは、同時にコンパイルされる必要があります。