我正在尝试使用axis-java2wsdl ant任务从我的一个java类创建wsdl,但我无法正确设置类路径。
我正在使用Ubuntu的libaxis-java包,它将axis-ant.jar安装在$ANT_HOME/lib中,将axis.jar安装在/usr/share/java中。我的build.xml的有趣部分如下:
<property name="library.dir" value="lib"/>
<property name="system.library.dir" value="/usr/share/java"/>
<path id="libraries">
<fileset dir="${library.dir}">
<include name="*.jar"/>
</fileset>
<fileset dir="${system.library.dir}">
<include name="*.jar"/>
</fileset>
</path>
<target name="genwsdl" depends="compile">
<taskdef resource="axis-tasks.properties" classpathref="libraries"/>
<axis-java2wsdl>
details omitted
</axis-java2wsdl>
</target>
运行ant genwsdl
会产生以下结果:
/build.xml:50: taskdef A class needed by class
org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask
cannot be found: org/apache/axis/utils/DefaultAuthenticator
蚂蚁能够找到axis-java2wsdl任务的定义,因为axis-ant.jar在$ANT_HOME/lib中,但它无法找到axis.jar中的类,即使该jar在“libraries”定义的路径上。
我知道这是一个类路径问题,因为我可以通过在$ANT_HOME/lib中创建符号链接axis.jar来绕过DefaultAuthenticator到其他未找到的类。 如何让taskdef在不将所有内容都符号链接到$ANT_HOME/lib的情况下识别/usr/share/lib或我的项目的本地lib目录中的jar文件?
编辑:
最终,我成功生成了这个wsdl,使用了这行代码:
ant -lib /usr/share/java/axis.jar -lib /usr/share/java/jaxrpc.jar -lib /usr/share/java/wsdl4j.jar -lib /usr/share/java/commons-logging.jar -lib /usr/share/java/commons-discovery.jar -lib build genwsdl
我仍然非常希望有人能告诉我,在build.xml中无法定义这些库是我做错了什么。