【发布时间】:2020-02-06 18:38:32
【问题描述】:
我正在尝试在 Java 11 中使用 wsimport 工具。
我从 Eclipse EE4J 的 Metro 项目中获得了 jax-ws 的开源版本,地址为 https://github.com/eclipse-ee4j/metro-jax-ws。我试过 2.3.0 和 2.3.1 版本。
运行 wsimport 会导致包含类 WSDLModeler,其中包含此导入:
import javax.jws.WebParam.Mode;
jaxws-ri中的jar文件中没有包含,导致:
[exec] parsing WSDL...
[exec] Exception in thread "main" java.lang.NoClassDefFoundError: javax/jws/WebParam$Mode
[exec] at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.getParameterOrder(WSDLModeler.java:2585)
[exec] at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processLiteralSOAPOperation(WSDLModeler.java:779)
...
在 Jakarta 项目 jws-api(Jakarta Web 服务元数据项目)中有一个 WebParam 的实现——但在新的包名称 jakarta.jws.WebParam 下。
问题
- 我应该使用更新的 jax-ws 替代品吗?
- 或者是否有来自其他地方的 javax.jws.WebParam 的实现我应该包含在类路径中?
【问题讨论】:
-
该类在 jsr181-api.jar 中。我仍在尝试找出构建该 jar 的项目。
-
您可能对GlassFish 附带的wsimport 有一些运气。 wsimport 本身只使用 GlassFish 的模块和 modules/endorsed 目录中的七个 jar。
-
@VGR - 感谢您提供有用的提示。我也在尝试另一种选择——用 Apache CXF 的 wsdl2java 替换 wsimport。这可行,但生成的代码还包含对 javax.jws 包的引用——因此了解构建该 jar 的项目仍然有用。
-
Jakarta 项目中的包名更改为just 24 days ago。在其他工具向前推进到 jakarta 包之前,我想我可以从 github 拉取更早的版本。
标签: java jax-ws java-11 java-metro-framework