1

AntWSDLToJavaビルドファイルでApache CXFを使用して、WSDL から Java コードを作成したいと考えています。依存関係はIvyを使用して解決されます。私は常に次のエラーが発生します。

WSDLToJava Error: Could not find jaxb databinding within classpath

インストールがなく、Ivy を使用して仕事をしたいと考えています。これが私の Ant ビルドファイルの一部です。

<target name="generate" depends="init">
  <ivy:retrieve conf="build"/>
  <mkdir dir="${basedir}/target/generated"/>
  <ivy:cachepath pathid="build-classpath" conf="build"/>
  <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
    <arg value="-d"/>
    <arg value="${basedir}/target/generated"/>
    <arg value="-client"/>
    <arg value="${basedir}/src/schema/MyWebService.wsdl"/>
    <classpath refid="build-classpath"/>
  </java>
</target>

Java 6、Ant 1.8、Ivy 2.2.0 ant CXF 2.2.12 を使用しています。Ivy モジュールでは、次のように構成しました。

<configurations>
  <conf name="build" visibility="private"/>
  ...
</configurations>

<dependencies defaultconfmapping="*->default">
  <dependency org="org.apache.cxf" name="cxf-tools-wsdlto-frontend-jaxws" rev="2.2.12" conf="build"/>
  <dependency org="org.apache.cxf" name="cxf-rt-databinding-jaxb" rev="2.2.12" conf="build"/>
  ...
</dependencies>

問題はどこだ?依存関係が欠落している可能性がありますが、どれですか? Ivy がない場合、Ant 統合は、CXF インストールのすべての jar でクラスパスを使用します。そうすれば、うまくいきます。

ビルドの出力には、次のように表示されます。

generate (2s)
[generate] ivy:retrieve (1s)
[ivy:retrieve] :: resolving dependencies :: me#mine;1.0
[ivy:retrieve] confs: [build]
[ivy:retrieve] found org.apache.cxf#cxf-tools-wsdlto-frontend-jaxws;2.2.12 in public
[ivy:retrieve] found org.apache.cxf#cxf-tools-common;2.2.12 in public
[ivy:retrieve] found oro#oro;2.0.8 in public
[ivy:retrieve] found wsdl4j#wsdl4j;1.6.2 in public
[ivy:retrieve] found com.sun.xml.bind#jaxb-xjc;2.1.13 in public
[ivy:retrieve] found com.sun.xml.bind#jaxb-impl;2.1.13 in public
[ivy:retrieve] found javax.xml.bind#jaxb-api;2.1 in public
[ivy:retrieve] found javax.xml.stream#stax-api;1.0-2 in public
[ivy:retrieve] found javax.xml.soap#saaj-api;1.3 in public
[ivy:retrieve] found org.apache.cxf#cxf-api;2.2.12 in public
[ivy:retrieve] found org.apache.cxf#cxf-common-utilities;2.2.12 in public
... (many more) 
[ivy:retrieve] :: retrieving :: me#mine
[ivy:retrieve] confs: [build]
[ivy:retrieve] 32 artifacts copied, 28 already retrieved (8959kB/38ms)
[generate] mkdir
[mkdir] Created dir: /tmp/target/generated
[generate] java (1s)
[java] WSDLToJava Error: Could not find jaxb databinding within classpath
4

1 に答える 1

8

cxf-tools-wsdlto-databinding-jaxbおそらく必要な依存関係もあります。さまざまな理由から、ツールとランタイムは JAXB 用に分離されています。

于 2011-03-09T12:17:43.120 に答える