[英]wsimport generates faulty code
我使用 wsimport 生成我的 java 存根文件。 为此,我在 Eclipse 中使用了 ant 构建文件:
<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>
任务运行没有任何错误。 它创建不同的 java 文件,还有 Knowledgebase.java 和 KnowledgebasePort.java。 在知识库.java 中,有以下构造函数:
public Knowledgebase(WebServiceFeature... features) {
super(__getWsdlLocation(), KNOWLEDGEBASE_QNAME, features);
}
对于他们,我收到一个错误“构造函数 Service(...) 未定义”。 我导入了当前的 jax-ws jar 文件。 我的生成过程是否坏了,是我使用了错误的 jars 还是错误在哪里?
服务 object 由 Java EE SDK 提供。 It added a new constructor between Java EE 5 and Java EE 6. It would seem the wsimport you're using is from a Java EE 6 JDK and the compiler is using a Java EE 5 SDK?
例如,如果我们使用 java 1.6.0_27 和 Metro 2.2,我们需要认可 webservices-api.jar。
java-install-dir
\jre\lib\endorsed\java-install-dir
中的正确 JRE。 这是在 Window->Preferences->Java->Installed JREs->Add 中完成的。现在错误“构造函数服务(...)未定义”应该消失。
您可以设置 xendorsed="true" 和 xnocompile="false" 并让 ant 编译您生成的 java 文件,它对我有用
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.