xjc(1)

名前
xjc - XMLバインドのためのJava(tm)アーキテクチャ
バインディング・コンパイラ

仕様バージョン: 2.1
リファレンス実装(RI)バージョン: 2.1.3

xjcの起動

バインディング・コンパイラを起動するには、使用するプラットフォームに応じたbinディレクトリ内のxjcシェル・スクリプトを使用します。また、バインディング・コンパイラを実行するためのAntタスクも用意されています。 XJC Antタスクの使用 @
https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.htmlの手順を参照してください。

% xjc -help

  出力

Usage: xjc [-options ...] <schema file/URL/dir/jar> ... [-b <bindinfo>] ...
If dir is specified, all schema files in it will be compiled.
If jar is specified, /META-INF/sun-jaxb.episode binding file will be compiled.
Options:
  -nv                :  do not perform strict validation of the input schema(s)
  -extension         :  allow vendor extensions - do not strictly follow the Compatibility Rules and App E.2 from the JAXB Spec
  -b <file/dir>      :  specify external bindings files (each <file> must have its own -b); if a directory is given, **/*.xjb is searched
  -d <dir>           :  generated files will go into this directory
  -p <pkg>           :  specifies the target package
  -httpproxy <proxy> :  set HTTP/HTTPS proxy; format is [user[:password]@]proxyHost:proxyPort
  -httpproxyfile <f> :  works like -httpproxy but takes the argument in a file to protect password
  -classpath <arg>   :  specify where to find user class files
  -catalog <file>    :  specify catalog files to resolve external entity references; support TR9401, XCatalog, and OASIS XML Catalog format
  -readOnly          :  generated files will be in read-only mode
  -npa               :  suppress generation of package level annotations (**/package-info.java)
  -no-header         :  suppress generation of a file header with timestamp
  -target 2.0        :  behave like XJC 2.0 and generate code that doesnt use any 2.1 features
  -xmlschema         :  treat input as W3C XML Schema (default)
  -relaxng           :  treat input as RELAX NG (experimental,unsupported)
  -relaxng-compact   :  treat input as RELAX NG compact syntax (experimental,unsupported)
  -dtd               :  treat input as XML DTD (experimental,unsupported)
  -wsdl              :  treat input as WSDL and compile schemas inside it (experimental,unsupported)
  -verbose           :  be extra verbose
  -quiet             :  suppress compiler output
  -help              :  display this help message
  -version           :  display version information
Extensions:
  -Xlocator          :  enable source location support for generated code
  -Xsync-methods     :  generate accessor methods with the 'synchronized' keyword
  -mark-generated    :  mark the generated code as @javax.annotation.Generated
  -episode <FILE>    :  generate the episode file for separate compilation

オプション

    -nv デフォルトでは、XJCバインディング・コンパイラは、ソース・スキーマを処理する前に厳密な検証を実行します。このオプションを使用すると、厳密なスキーマ検証か無効になります。これは、バインディング・コンパイラが検証を一切実行しないということではありません。より厳密でない検証を実行するということです。

    -extension
        デフォルトでは、XJCバインディング・コンパイラは、JAXB仕様のCompatibilityの章で説明されているルールを厳密に強制します。付録E.2には、JAXB v1.0で完全にはサポートされていない一連のW3C XMLスキーマ機能が定義されています。場合によっては、このスイッチで有効になる「-extension」モードでそれらの機能が使用できる場合があります。また、デフォルトの厳密なモードでは、仕様に定義されているバインディング・カスタマイズのみが使用できます。「-extension」スイッチを指定すれば、JAXB Vendor Extensionを使用できます。

    -b <file>
        処理する外部バインディング・ファイルを1つまたは複数指定します。(バインディング・ファイルごとに「-b」スイッチを指定する必要があります。)外部バインディング・ファイルの構文は非常に柔軟です。複数のスキーマのカスタマイズが含まれる1つのバインディング・ファイルを使用したり、それらのカスタマイズを複数のバインディング・ファイルに分割したりできます。次に例を示します。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バインディング・コンパイラは、Javaコンテンツ・クラスを現在のディレクトリに生成します。このオプションを使用すると、代替出力ディレクトリを指定できます。出力ディレクトリはあらかじめ存在している必要があります。XJCバインディング・コンパイラは、このディレクトリを自動的に作成しません。

    -p <pkg>
        このコマンドライン・オプション経由でターゲット・パッケージを指定した場合、その指定内容は、パッケージ名に対するすべてのバインディング・カスタマイズや、仕様で規定されているデフォルトのパッケージ名アルゴリズムよりも優先されます。

    -httpproxy <proxy>
        HTTP/HTTPSプロキシを指定します。形式は[user[:password]@]proxyHost[:proxyPort]です。従来の-hostおよび-portは、下位互換性のためにリファレンス実装(RI)ではサポートされていますが、推奨されなくなりました。このオプションで指定されたパスワードは、topコマンドを使用するユーザーなど、他のユーザーが表示できる引数であることに注意してください。セキュリティを高めるには、次の-httpproxyfileを使用してください。

    -httpproxyfile <file>
        HTTP/HTTPSプロキシをファイル経由で指定します。形式は前述のものと同じですが、このファイル内に指定されたパスワードを他のユーザーが表示することはできません。

    -classpath <arg>
        <jxb:javaType>および<xjc:superClass>カスタマイズが使用するクライアント・アプリケーションのクラス・ファイルの検索場所を指定します。

    -catalog <file>
        外部エンティティ参照を解決するカタログ・ファイルを指定します。TR9401、XCatalogおよびOASIS XML Catalog形式がサポートされます。詳細は、XML Entity and URI Resolversのドキュメントを参照するか、catalog-resolverサンプル・アプリケーションを調べてください。

    -readOnly
        デフォルトでは、XJCバインディング・コンパイラは、生成するJavaソース・ファイルを書込みから保護しません。このオプションを使用すると、XJCバインディング・コンパイラは生成されるJavaソースを強制的に読取り専用にします。

    -npa
        パッケージ・レベルの注釈を**/package-info.javaに生成することを抑制します。このスイッチを使用して生成するコードでは、これらの注釈が他の生成済みクラスに内部化されます。

    -no-header
        多少のメモとタイムスタンプを含むファイル・ヘッダー・コメントの生成を抑制します。これを使用すると、生成されたコードでdiffを使用しやすくなります。

    -target 2.0
        JAXB 2.1機能に依存するコードを生成しないようにします。これにより、生成されたコードをJAXB 2.0ランタイム(JavaSE 6など)で実行できるようになります。

    -xmlschema
        入力スキーマをW3C XMLスキーマとして扱います(デフォルト)。このスイッチを指定しなくても、入力スキーマはW3C XMLスキーマと見なされます。

    -relaxng
        入力スキーマをRELAX NGとして扱います(試験的、未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。

    -relaxng-compact
        入力スキーマをRELAX NG圧縮構文として処理します(試験的、未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。

    -dtd
        入力スキーマをXML DTDとして扱います(試験的、未サポート)。RELAX NGスキーマのサポートはJAXB Vendor Extensionとして提供されています。

    -wsdl
        入力をWSDLとして扱い、その内部のスキーマをコンパイルします(試験的、未サポート)。

    -quiet
        進捗情報や警告など、コンパイラの出力を抑制します。

    -verbose
        情報メッセージを出力したり特定のエラー発生時にスタック・トレースを表示したりするなど、きわめて冗長になります。

    -help
        コンパイラ・スイッチの概要を表示します。

    -version
        コンパイラのバージョン情報を表示します。

    <schema file/URL/dir>
        コンパイル対象となる1つまたは複数のスキーマ・ファイルを指定します。ユーザーがディレクトリを指定した場合、xjcはそのディレクトリを走査し、そこで見つかったすべてのスキーマ・ファイルをコンパイルします。

  非標準のコマンドライン・オプション

    -Xlocator
        生成されたコードでは、非整列化の後にJava Beanインスタンスに含まれるソースXMLに関するSAX Locator情報が公開されます。

    -Xsync-methods
        生成されたすべてのメソッド・シグニチャにsynchronizedキーワードが含められます。

    -mark-generated
        生成されたコードに注釈@javax.annotation.Generatedを付けます。

    -episode <file>
        コンパイルごとに指定されたエピソード・ファイルを生成します。

  非推奨コマンドライン・オプションおよび削除されたコマンドライン・オプション

    -host & -port
        これらのオプションは非推奨となり、-httpproxyオプションで置き換えられました。これらのオプションは、下位互換性を確保する目的で引続きサポートされますが、ドキュメントには記載されず、将来のリリースで削除される可能性もあります。

    -use-runtime
        JAXB 2.0仕様では、移植性のあるランタイムが定義されたため、JAXB RIが**/impl/runtimeパッケージを生成する必要がなくなりました。このため、このスイッチは不要となり、削除されました。

    -source
        -source互換性スイッチは、JAXB 2.0の最初のEarly Access版で導入されました。このスイッチは、JAXB 2.0の今後のリリースから削除されることになりました。1.0.xコードを生成する必要がある場合は、1.0.xコードベースのインストールを使用してください。

  コンパイラの制限

通常は、関連するすべてのスキーマを、同じバインディング・コンパイラ・スイッチを指定して1つの単位としてコンパイルするのが最も安全です。

xjcを実行するときは、次に示す制限に注意してください。これらの問題のほとんどは、xjcを何度か呼び出して複数のスキーマをコンパイルする場合にのみ当てはまります。

    o   複数のスキーマを同時にコンパイルする場合は、ターゲットのJavaパッケージ名に次の優先順位のルールが適用されることに注意してください。

        1.  「-p」コマンドライン・オプションが最も優先されます。

        2.  <jaxb:package>のカスタマイズ

        3.  targetNamespaceが宣言されている場合は、仕様に定義されているtargetNamespace -> Javaパッケージ名のアルゴリズムを適用します。

        4.  targetNamespaceが宣言されていない場合は、「generated」という名前のハードコードされたパッケージを使用します。

    o   名前空間ごとに複数の<jaxb:schemaBindings>を持つことは不正です。このため、1つのターゲット名前空間内の2つのスキーマを異なるJavaパッケージにコンパイルすることはできません。

    o   1つのJavaパッケージにコンパイルされるすべてのスキーマは、XJCバインディング・コンパイラに同時に送信する必要があります。個別にコンパイルすることはできず、予期したとおりに動作しません。

    o   複数のスキーマ・ファイルにまたがる要素置換グループは、同時にコンパイルする必要があります。

関連項目

    o   バインディング・コンパイラ(XJC)の実行: [ コマンドラインの命令 @
        https://jaxb.dev.java.net/nonav/2.1.3/docs/xjc.html、 XJC Antタスクの使用 @
        https://jaxb.dev.java.net/nonav/2.1.3/docs/xjcTask.html]

    o   XMLバインドのためのJavaアーキテクチャ(JAXB) @
        http://docs.oracle.com/javase/7/docs/technotes/guides/xml/jaxb/index.html