在JDK 6上安装最新的JAX-WS

时间:2012-05-03 15:18:41

标签: jax-ws

我按照here的说明在我的JDK v1.6.0_31上正确安装了最新的JAX-WS版本(2.2.6)(即复制了jaxws-api.jar和jaxb-api.jar)从JAX-WS版本到我的$ {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罐子。似乎没什么用。我错过了什么吗?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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

enter image description here

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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