我收到以下错误:
com.sun.xml.messaging.saaj.soap.MessageFactoryImpl cannot be cast to javax.xml.soap.MessageFactory
是否有一种方法可以强制使用 saaj-api 中的 MessageFactory 而不是 javaee-api 中的 MessageFactory?至少我认为可能需要这样做。
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.3.15</version>
</dependency>
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>saaj-api</artifactId>
<version>1.3.5</version>
</dependency>
<prefer-application-packages>
<package-name>javax.xml.soap.*</package-name>
<package-name>javax.xml.ws.*</package-name>
<package-name>com.sun.xml.messsaging.saaj.*</package-name>
</prefer-application-packages>
最佳答案
一般来说,您不希望将 API 打包到您的 war/ear 文件中,因为它们应该由应用程序服务器提供。我会将范围设置为在这两个 api 依赖项上提供,并从那里开始工作。
关于java - 设置 WAR 中 jar 的优先顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25751216/