【问题标题】:JAX-WS in Java 11 and missing class WebParam$ModeJava 11 中的 JAX-WS 和缺少类 WebParam$Mode
【发布时间】: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


【解决方案1】:

如果其他人遇到同样的问题:

  • Jakarta 项目中的包名最近发生了变化,其他项目还没有跟上。
  • 在 Jakarta 项目的早期版本中,包名称仍为 javax.jws
  • 兼容版本 (1.1.1) 的二进制文件和源代码可在 repo.eclipse.org here 上获得。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多