XMLスキーマ・ファイルをコンパイルして、完全注釈付きJavaクラスにします。
xjc [ options ] schema file/URL/dir/jar ... [-b bindinfo ] ...
コマンド行オプション。 「オプション」を参照してください。
XMLスキーマ・ファイルの場所です。 dir
が指定されている場合は、その中にあるすべてのスキーマ・ファイルがコンパイルされます。 jar
が指定されている場合は、/META-INF/sun-jaxb.episode
バインディング・ファイルがコンパイルされます。
バインディング・ファイルの場所です。
ユーザーのプラットフォームのbinディレクトリにある適切なxjc
シェル・スクリプトを使用して、バインディング・コンパイラを起動します。 バインディング・コンパイラを実行するAntタスクも用意されています。 次のサイトで「Using the XJC with Ant」を参照してください。
http://jaxb.java.net/nonav/2.1.3/docs/xjcTask.html
「非標準オプション」も参照してください
「非推奨のオプションと削除されたオプション」を参照してください。
デフォルトでは、XJCバインディング・コンパイラは、ソース・スキーマを処理する前に厳密な検証を実行します。 このオプションを使用すると、厳密なスキーマ検証が無効になります。 これは、バインディング・コンパイラが検証を一切実行しないということではなく、より厳密でない検証を実行するということです。
デフォルトでは、XJCバインディング・コンパイラは、JAXB仕様の「Compatibility」の章で説明されている規則を厳密に強制します。 付録E.2には、JAXB v1.0で完全にはサポートされていない一連のW3C XMLスキーマ機能が定義されています。 場合によっては、このスイッチで有効になる-extension
モードでそれらの機能が使用できる場合があります。 また、デフォルトの厳密なモードでは、仕様に定義されているバインディング・カスタマイズのみの使用に制限されます。 -extension
スイッチを指定すれば、JAXB Vendor Extensionを使用できます。
処理する外部バインディング・ファイルを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
)。 さらに、コマンド行ではスキーマ・ファイルおよびバインディング・ファイルの順序は問いません。
デフォルトでは、XJCバインディング・コンパイラは、Javaコンテンツ・クラスを現在のディレクトリに生成します。 このオプションを使用すると、代替の出力ディレクトリを指定できます。 出力ディレクトリは、すでに存在している必要があります。 XJCバインディング・コンパイラでは、自動的に作成されません。
このコマンド行オプションを使用してターゲット・パッケージを指定した場合は、その指定によって、パッケージ名に対するすべてのバインディング・カスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムがオーバーライドされます。
[user[:password]@]proxyHost[:proxyPort]の形式でHTTPまたはHTTPSプロキシを指定します。 従来の-host
および-port
オプションは、下位互換性を保つためにリファレンス実装でもサポートされていますが、非推奨になりました。 このオプションで指定されたパスワードは、topコマンドを使用する他のユーザーも表示できる引数です。 セキュリティを高めるには、-httpproxyfile
オプションを使用してください。
ファイルを使用してHTTPまたはHTTPSプロキシを指定します。 形式は-httpproxy
オプションと同じですが、このファイル内に指定されたパスワードを他のユーザーが表示することはできません。
jxb:javaTypeおよびxjc:superClassカスタマイズで使用されるクライアント・アプリケーションのクラス・ファイルの検索場所を指定します。
外部エンティティ参照を解決するカタログ・ファイルを指定します。 TR9401、XCatalogおよびOASIS XML Catalog形式がサポートされます。 次のサイトで「XML Entity and URI Resolvers」を参照してください。
http://xerces.apache.org/xml-commons/components/resolver/resolver-article.html
デフォルトでは、XJCバインディング・コンパイラは、生成するJavaソース・ファイルを書き込みから保護しません。 このオプションを使用すると、XJCバインディング・コンパイラは生成されたJavaソースを強制的に読取り専用としてマークします。
パッケージ・レベルの注釈を**/package-info.java
に生成することを抑制します。 このスイッチを使用して生成するコードでは、これらの注釈がほかの生成済みクラスに内部化されます。
多少のノートとタイムスタンプを含むファイル・ヘッダー・コメントの生成を抑制します。 このオプションを使用すると、生成されたコードとdiff
コマンドとの互換性が高くなります。
なんらかのJAXB 2.1機能に依存するコードを生成しないようにします。 これにより、生成されたコードをJAXB 2.0ランタイム環境(Java SE 6など)で実行できます。
入力スキーマをW3C XMLスキーマとして処理します(デフォルト)。 このスイッチを指定しない場合、入力スキーマはW3C XMLスキーマと同様に処理されます。
入力スキーマをRELAX NGとして処理します(試験的で未サポート)。 RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。
入力スキーマをRELAX NG圧縮構文として処理します(試験的で未サポート)。 RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。
入力スキーマをXML DTDとして処理します(試験的で未サポート)。 RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。
入力をWSDLとして処理し、その内部のスキーマをコンパイルします(試験的で未サポート)。
進捗情報や警告など、コンパイラの出力を抑制します。
情報メッセージを出力したり特定のエラー発生時にスタック・トレースを表示したりするなど、きわめて冗長になります。
コンパイラ・スイッチの簡単なサマリーを表示します。
コンパイラのバージョン情報を表示します。
コンパイル対象となる1つまたは複数のスキーマ・ファイルを指定します。 ディレクトリを指定した場合、xjc
コマンドはすべてのスキーマ・ファイルでそのディレクトリをスキャンし、それらをコンパイルします。
生成されたコードでは、非整列化の後にJava Beanインスタンスに含まれるソースXMLに関するSAX Locator情報が公開されます。
生成されたすべてのメソッド・シグニチャにsynchronized
キーワードが含められます。
生成されたコードに注釈@javax.annotation.Generated
を付けます。
個々のコンパイルごとに指定されたエピソード・ファイルを生成します。
これらのオプションは、-httpproxy
オプションで置き換えられました。 これらのオプションは、下位互換性を確保する目的でサポートされていますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。
JAXB 2.0仕様で移植性のあるランタイム環境が規定されたため、JAXB RIが**/impl/runtime
パッケージを生成する必要がなくなりました。 このため、このスイッチは不要となり、削除されました。
-source
互換性スイッチは、JAXB 2.0の最初のEarly Access版で導入されました。 このスイッチは、JAXB 2.0の今後のリリースから削除されます。 1.0.xコードを生成する必要がある場合は、1.0.xコード・ベースのインストールを使用してください。
通常は、関連するすべてのスキーマを、同じバインディング・コンパイラ・スイッチを指定して1つの単位としてコンパイルするのがもっとも安全です。 xjc
コマンドを実行するときは、次のリストに示す制限に注意してください。 このような問題のほとんどは、xjc
コマンドを複数回呼び出して複数のスキーマをコンパイルする場合にのみ適用されます。
複数のスキーマを同時にコンパイルする場合は、ターゲットのJavaパッケージ名に次の優先順位の規則が適用されることに注意してください。
-p
オプションがもっとも優先されます。
jaxb:packageのカスタマイズです。
targetNamespace
が宣言されている場合は、仕様に定義されているJavaパッケージ名のアルゴリズムにt
argetNamespace
を適用します。
targetNamespace
が宣言されていない場合は、generated
という名前のハードコードされたパッケージを使用します。
名前空間ごとに複数のjaxb:schemaBindingsを持つことができないため、同じターゲット名前空間にある2つのスキーマを異なるJavaパッケージにコンパイルすることはできません。
同じJavaパッケージにコンパイルされるスキーマはすべて、同時にXJCバインディング・コンパイラに送信される必要があります。 個別にコンパイルできないため、期待どおりに動作しません。
複数のスキーマ・ファイルにまたがる要素置換グループは、同時にコンパイルされる必要があります。
次のサイトの「Binding Compiler (xjc)」
http://jaxb.java.net/nonav/2.2.3u1/docs/xjc.html
次のサイトの「Java Architecture for XML Binding (JAXB)」
http://www.oracle.com/technetwork/articles/javase/index-140168.html