我试图使用jax-ws生成web服务代理类,使用wsimport ant任务(类似于这个问题 ),并提出以下问题:
据我所知,JDK1.6的最新版本包括jax-ws,WsImport ant任务是在JDK的tools.jar文件中定义的。
为什么ant不自动找到它?
为什么eclipse不能自动找到它呢?
我发现了一些关于在JDK 6中使用jax-ws的引用,但这些引用似乎是基于复制单独下载的jax-ws库并将其放到JDK ext文件夹中(考虑到现在它实际上已与JDK捆绑在一起,我认为不再需要它)。
,对于已经包含jax-ws?的JDK1.6版本,使用wsimport任务的正确方法是什么?
我的构建XML:
<?xml version="1.0" encoding="UTF-8"?>
<project name="wsproxy">
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" />
<target name="wsgentest">
<wsimport
wsdl="http://localhost/Service?wsdl"
destdir="bin-gen"
sourcedestdir="src-gen"
keep="true"
verbose="true"
package="com.ws">
</wsimport>
</target>
</project>发布于 2011-08-03 16:04:50
事实证明,JDK中的WsImport类实际上不是一个ant任务,而是实际的wsimport命令行工具。我也误解了包名: com.sun.tools.internal.ws。
实际的ant任务可以在地铁包这里中的webservices-tools.jar中找到。您需要将其放到ant目录中。
发布于 2016-04-20 07:21:48
据我所知,与JDK6捆绑的是二进制工具本身,而不是实际的Ant任务。
我在我的开发框中有1.6.0_31,尽管这是一个稍微特殊的(JRockit R28.2.3),这是我找到的正确使用wsimport任务的唯一方法。
java -jar {jaxwsJarName}安装JAR内容,不管它的名称是什么。此命令将创建一个[jaxws-ri]文件夹。[jaxws-ri/lib]文件夹的内容。尽管规模很大,但我还是希望在自己的项目中拥有外部库,以确保任何人都能够编译和打包代码,而不需要外部构件。taskdef项和wsimport任务。这是我的taskdef项目:
<taskdef
name="wsimport"
classname="com.sun.tools.ws.ant.WsImport">
<classpath>
<fileset dir="${lib.dir}/jaxws-ri-2.1.10">
<include name="**/*.jar" />
</fileset>
</classpath>
</taskdef>这是我的wsimport任务:
<target name="generate-code">
<wsimport
wsdl="${wsdl.dir}/${wsdl.name}-${wsdl.version}.wsdl"
sourcedestdir="${src.dir}"
destdir="${build.debug.dir}"
package="${generated.code.package}">
<depends file="${wsdl.dir}/${wsdl.name}-${wsdl.version}.wsdl" />
<produces dir="${build.debug.dir}" />
</wsimport>
</target>https://stackoverflow.com/questions/6862345
复制相似问题