<分区>
我正在尝试使用 SOAP 创建一条简单的消息:
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();
当我使用 Java 8 构建项目时它很好,但是使用 Java 11 构建它失败并出现编译错误:
package javax.xml.soap does not exist
我该如何解决这个问题?
<分区>
我正在尝试使用 SOAP 创建一条简单的消息:
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();
当我使用 Java 8 构建项目时它很好,但是使用 Java 11 构建它失败并出现编译错误:
package javax.xml.soap does not exist
我该如何解决这个问题?
最佳答案
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
参见 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 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 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 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/