12

我按照此处的说明在我的 JDK v1.6.0_31 之上正确安装最新的 JAX-WS 版本(2.2.6)(即将 JAX-WS 版本中的 jaxws-api.jar 和 jaxb-api.jar 复制到我的 ${JAVA_HOME}/lib/endorsed 目录)。从 Eclipse 内部,我可以正确运行 wsimport ant 任务,并且生成的代码在以下注释中给出了版本标记:

/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.6b21 
* Generated source version: 2.2
* 
*/

我遇到的问题是生成的客户端代码显示错误,这使我相信编译器仍在使用 JAX-WS 2.1 版:

The constructor Service(URL, QName, WebServiceFeature[]) is undefined

The attribute required is undefined for the annotation type XmlElementRef

我尝试在启动 Eclipse 时显式设置 -Djava.endorsed.dir arg,并且我还尝试在 Eclipse->Preferences->Java->InstalledJREs 下设置此arg,但这些都没有帮助。我的 wsimport ant 任务类路径被定义为查看 JAX-WS 2.2.6 jar。我还尝试设置我的项目构建路径以拉入 2.2.6 jar。似乎没有任何效果。我错过了什么吗?

4

4 回答 4

6

不知道为什么它没有把它放在前面,他认可了 lib(除了你放置你的 libs 的认可目录可能是用于 eclipse 正在使用的不同 JRE/JDK 吗?),但关于你尝试的最后一件事......添加罐子直接到构建路径....如果您订购构建路径条目以使您的 JAX-WS jar 位于 JDK 条目之上,这将起作用。

于 2012-05-03T16:44:25.893 回答
1

您已经生成了需要 JAX-WS 2.1 的代码。2.0 版没有 WebServiceFeature 类,因此在 Service 中也没有具有这种参数类型的构造函数。

如您所见,在 Java SE 6 中没有这样的构造函数:javax.xml.ws.Service SE 6,但例如在 Java EE 6 中有:javax.xml.ws.Service EE 6

在此处输入图像描述

于 2014-08-05T22:10:28.170 回答
1

如果可能,一种解决方案可以用更高的 jdk(1.7 或 1.8)替换 jdk1.6。

于 2016-09-22T13:52:53.363 回答
0

您可以使用以下命令生成存根 wsdl2java -p -client -frontend jaxws21

于 2015-03-04T17:51:05.270 回答