2

Ant スクリプトで JAXB を使用して XML スキーマ ファイルからクラスを生成する必要があります。デフォルトの方法でそれを行ったとき、すべてがうまくいきました。後で、各クラスに値コンストラクターが必要であることに気付きました。XJC に value-constructor プラグインを使用しようとしましたが、Ant スクリプトを実行するとエラーが発生しました:

BUILD FAILED
c:\HOME\plt\owf2-testing\EdytorScenariuszy\build.xml:17:

    java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: Provider org.jvnet.jaxb2_commons.plugin.value_constructor.ValueConstructorPlugin not a subtype
        at java.util.ServiceLoader.fail(ServiceLoader.java:214)
        at java.util.ServiceLoader.access$300(ServiceLoader.java:164)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:352)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:428)
        at com.sun.tools.xjc.Options.findServices(Options.java:957)
        at com.sun.tools.xjc.Options.getAllPlugins(Options.java:374)
        at com.sun.tools.xjc.Options.parseArgument(Options.java:688)
        at com.sun.tools.xjc.Options.parseArguments(Options.java:809)
        at com.sun.tools.xjc.XJC2Task._doXJC(XJC2Task.java:474)
        at com.sun.tools.xjc.XJC2Task.doXJC(XJC2Task.java:457)
        at com.sun.tools.xjc.XJC2Task.execute(XJC2Task.java:380)
        at com.sun.istack.tools.ProtectedTask.execute(ProtectedTask.java:103)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)

ここに私のAntスクリプトがあります:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<project name="EdytorScenariuszy" default="createClasses">

        <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
                <classpath>
                        <pathelement path="lib/jaxb-xjc.jar"/>
                        <pathelement path="lib/jaxb-impl.jar"/>
                        <pathelement path="lib/jaxb2-value-constructor.jar"/>
                </classpath>
        </taskdef>

        <target name="clean">
                <delete dir="src/xml" />
        </target>

        <target name="createClasses" depends="clean">
                <xjc schema="scenariuszTestowy.xsd" binding="mapowanieTypow.xjb" destdir="src" package="xml"  encoding="UTF-8">
                        <arg value="-Xvalue-constructor"/>
                </xjc>
        </target>
</project>

誰かがこの例外に対処する方法を手伝ってくれたら、とても感謝しています。

4

2 に答える 2

4

Java 7(java1.5を使用する場合はポロベムなし)を使用すると、似たような問題があり、タスク定義で「com.sun.tools.xjc.XJC2Task」を使用して解決しました。

それ以外の

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

これを使って

<taskdef name="xjc" classname="com.sun.tools.xjc.XJC2Task">
于 2013-11-29T09:31:15.217 に答える
0

この特定のプラグインの経験はありませんが、検索すると JAXB のバージョン管理の問題が示唆されます。値コンストラクター JAR のファイル名が他のものと同じ構文を持っていないことに気付きました (たとえば、jaxb ではなく jaxb2 など)。これは純粋に表面的なものかもしれませんが、JAXB のバージョンが一致しているかどうか、および JDK とターゲット JAXB のバージョンに値コンストラクター ディストリビューションを使用しているかどうかを確認します。

JAXB バインディング ファイルを使用して JAXB 出力をカスタマイズできない。

于 2013-08-14T07:03:09.277 に答える