我正在尝试使用 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捆绑。
根据发行说明,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 EE 8的Jakarta XML Web Services模块来解决问题,而不是使用旧的JAX-WS模块:
<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 Services 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 Services4.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>
jaxws-ri
依赖包含了许多JAR文件,你可能不需要全部。 - holmis83