Java wsimport生成错误代码
我使用wsimport生成java存根文件。为此,我在Eclipse中使用了一个ant构建文件:Java wsimport生成错误代码,java,wsimport,Java,Wsimport,我使用wsimport生成java存根文件。为此,我在Eclipse中使用了一个ant构建文件: <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"> <classpath> <fileset dir="../lib"> <include name="jaxws-tools.jar" /> </fi
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath>
<fileset dir="../lib">
<include name="jaxws-tools.jar" />
</fileset>
</classpath>
</taskdef>
<target name="generate">
<wsimport wsdl="../wsdl/Knowledgebase.wsdl"
destdir="../bin"
sourcedestdir="../gen"
keep="true"
xendorsed="true">
</wsimport>
</target>
对于它们,我得到一个错误“构造函数服务(…)未定义”。我导入了当前的jax-ws-jar文件。我的生成过程是否中断,我是否使用了错误的JAR,或者错误在哪里?服务对象由Java EE SDK提供。它在JavaEE5和JavaEE6之间添加了一个新的构造函数。您使用的wsimport似乎来自Java EE 6 JDK,而编译器使用的是Java EE 5 SDK?如果我们使用Java 1.6.0_27和Metro 2.2,我们需要认可webservices-api.jar
java install dir
\jre\lib\endorned\java install dir
中的正确JRE。这是在窗口->首选项->Java->安装的JRE->添加中完成的<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath>
<fileset dir="${ext.myproject.path}/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${platformhome}/resources/ant/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</taskdef>
<macrodef name="myproject_before_compile_core">
<sequential>
<mkdir dir="${ext.myproject.path}/gensrc"/>
<mkdir dir="${ext.myproject.path}/classes"/>
<echo message="Generating WS stubs for Simulate BOM Service"/>
<wsimport wsdl="${ext.myproject.path}/resources/wsdl/service.wsdl" package="com.xx.energy.yy.xyz.ws.stubs.service" xnocompile="false" destdir="${ext.myproject.path}/classes" sourcedestdir="${ext.myproject.path}/gensrc" keep="true" wsdlLocation="${ext.myproject.path}/resources/wsdl" xendorsed="true">
<produces dir="${ext.myproject.path}/gensrc/com/xx/energy/yy/xyz/ws/stubs/service">
<include name="*.java"/>
</produces>
<depends file="${ext.myproject.path}/resources/wsdl/service.wsdl"/>
</wsimport>
</sequential>
</macrodef>
我担心这个版本会有冲突:-(在我的项目设置中,我已将Java Compiler>Compiler Compliance Level设置为1.6。还有什么地方会出现不匹配?在Eclipse中也是如此?您似乎也在使用Ant。为了使用wsimport,您需要使用taskdef来定义它。您可以发布taskdef吗?您在类路径中使用了什么?要使JDK使用不同的版本,请如果需要将新的api JAR添加到JDK本身,您可以将JAR添加到认可的目录中,即/jre/lib/annowed。我在该目录中有jaxb api和jaxws api。
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath>
<fileset dir="${ext.myproject.path}/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${platformhome}/resources/ant/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</taskdef>
<macrodef name="myproject_before_compile_core">
<sequential>
<mkdir dir="${ext.myproject.path}/gensrc"/>
<mkdir dir="${ext.myproject.path}/classes"/>
<echo message="Generating WS stubs for Simulate BOM Service"/>
<wsimport wsdl="${ext.myproject.path}/resources/wsdl/service.wsdl" package="com.xx.energy.yy.xyz.ws.stubs.service" xnocompile="false" destdir="${ext.myproject.path}/classes" sourcedestdir="${ext.myproject.path}/gensrc" keep="true" wsdlLocation="${ext.myproject.path}/resources/wsdl" xendorsed="true">
<produces dir="${ext.myproject.path}/gensrc/com/xx/energy/yy/xyz/ws/stubs/service">
<include name="*.java"/>
</produces>
<depends file="${ext.myproject.path}/resources/wsdl/service.wsdl"/>
</wsimport>
</sequential>
</macrodef>