Java 11 包 javax.xml.soap 不存在

标签 java jakarta-ee jax-ws java-11

<分区>

我正在尝试使用 SOAP 创建一条简单的消息:

MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();

当我使用 Java 8 构建项目时它很好,但是使用 Java 11 构建它失败并出现编译错误:

package javax.xml.soap does not exist

我该如何解决这个问题?

最佳答案

JAX-WS 从 Java 11 中移除

JAX-WS不再与 Java 11 捆绑在一起。

根据release notes , Java 11 移除了 Java EE 模块:

java.xml.ws (JAX-WS, plus the related technologies SAAJ and Web Services Metadata) - REMOVED
  • Java 8 - 好的
  • Java 9 - 已弃用
  • Java 10 - 已弃用
  • Java 11 - 已删除

参见 JEP 320了解更多信息。

您可以使用 Java EE 技术的替代版本来解决此问题。只需添加 com.sun.xml.ws : jaxws-ri包含您需要的技术的 Maven 工件:

<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>jaxws-ri</artifactId>
  <version>2.3.2</version>
  <type>pom</type>
</dependency>

Jakarta EE 8 更新(2020 年 3 月)

您可以使用 Jakarta XML Web Services 来解决问题,而不是使用旧的 JAX-WS 模块。来自 Jakarta EE 8 :

<dependency>
  <groupId>jakarta.xml.ws</groupId>
  <artifactId>jakarta.xml.ws-api</artifactId>
  <version>2.3.3</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>jaxws-rt</artifactId>
  <version>2.3.3</version>
  <scope>runtime</scope>
</dependency>

Jakarta EE 9 更新(2020 年 11 月)

使用最新版本的 Jakarta XML Web 服务 3.0 :

<dependency>
  <groupId>jakarta.xml.ws</groupId>
  <artifactId>jakarta.xml.ws-api</artifactId>
  <version>3.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>jaxws-rt</artifactId>
  <version>3.0.0</version>
  <scope>runtime</scope>
</dependency>

注意:将javax.* 导入更改为jakarta.*

Jakarta EE 10 更新(2022 年 6 月)

使用最新版本的 Jakarta XML Web 服务 4.0 (需要 Java SE 11 或更新版本):

<dependency>
  <groupId>jakarta.xml.ws</groupId>
  <artifactId>jakarta.xml.ws-api</artifactId>
  <version>4.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>jaxws-rt</artifactId>
  <version>4.0.0</version>
  <scope>runtime</scope>
</dependency>

关于Java 11 包 javax.xml.soap 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54573998/

相关文章:

java - 如何从我的 java .jar 文件创建可执行的 apple .app 文件?

java - 将字符串拆分为单个单词并忽略其他所有内容

java - 重装系统后"The specified Tomcat installation directory does not exist"

java - GetParts() 在 servlet 中返回 null

java - 发送嵌入 SOAP 消息中的 XML 数据的最佳实践是什么?

java - 在小米设备的锁定屏幕上显示通知

JavaMail 无法从 docker 容器发送电子邮件

java - 在不同的端口部署不同的应用程序

web-services - JAX-WS WebServiceContext 保持为 null(注释注入(inject)失败)

wsdl - 为什么 JAX-WS 客户端在运行时访问 WSDL?