0

誰かがこの問題を経験したことがあり、おそらくいくつかの光を当てることができることを願っています.

xml スキーマと ant ビルド ファイルがあります。同じ jaxb-xjc.jar を使用して xml コンパイルを行っている場合でも、Windows と Mac で ant を実行すると、出力 .java ファイルが異なります。Windows 側では、属性の「getter」メソッドを「getX」と名付けています。Mac 側は、それらを「isX」と名付けたいと考えています。以前にこのようなことを経験したり、解決策を持っている人はいますか? これは、Windows Vista および 7 でこれを行う方法と、Mac OSX 10.6 および 10.7 (Mac OSX 10.8 でテストされていない) で行う方法との間で一貫しています。

- - 編集 - -

ant build.xml ファイルのコードの一部を添付します。

xjcが何であるかを伝えます。

<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
    <classpath refid="classpath"/>
</taskdef>

「実際の」コンパイルは次のとおりです。

オートマトン スキーマのコンパイル

    <echo>Compiling old automaton schema</echo>
    <xjc schema="${oldxml-schema}" destdir="${src.dir}" package="${oldxml.package}">
        <produces dir="${oldxml-gen.dir}" includes="**/*.java"/>
    </xjc>

    <echo>Compiling the plugin schema</echo>
    <mkdir dir="${plugin-gen.dir}" />
     <xjc schema="${plugin-schema}" destdir="${src.dir}" package="${plugin.package}">
         <produces dir="${plugin-gen.dir}" includes="**/*.java"/>
    </xjc>

    <echo>Compiling the pluginDesumaSide schema</echo>
    <mkdir dir="${pluginDesumaSide-gen.dir}" />
     <xjc schema="${pluginDesumaSide-schema}" destdir="${src.dir}" package="${pluginDesumaSide.package}">
        <produces dir="${pluginDesumaSide-gen.dir}" includes="**/*.java"/>
    </xjc>
</target>

すべてのターゲット (つまり、${} のようなものを意味します) が定義され、Mac が「getter」メソッドを変数の「is」メソッドとして命名することを除いて、すべてのリンクとコンパイルが正しく行われます。これらはブール属性であり、指定されていない場合はデフォルトがあります。

4

1 に答える 1

0

私が得た応答から、解決策をグーグルで検索できました。どうやら、この命名の不一致ともう 1 つの不一致 (getter はプリミティブを返しますが、setter はオブジェクトのみを受け入れる) は、仕様の不一致が原因で、古い xml コンパイラで偶然明らかになりました。

これは、http://jaxb.java.net/ にアクセスして新しい jaxb-impl.jar と jaxb-xjc.jar を取得することで修正されました。jaxb.jar ファイルのダウンロードをダウンロードして実行すると、必要な jar ファイルが作成されました。

于 2012-08-08T01:01:27.963 に答える