java.lang.NoClassDefFoundError : javax/xml/soap/SOAPException

2022-08-31 23:47:25

我使用Spring创建了一个Web服务。在我的嵌入式tomcat服务器上运行它时,它可以正常工作。但是,当我将其打包为JAR文件并使用命令运行它时,我会收到此异常。java -jar

我的服务发送一个简单的 soap 请求,服务器响应为:

 "exception": "java.lang.NoClassDefFoundError",
    "message": "javax/xml/soap/SOAPException",

这就是我在Postman中得到的回应。

任何想法,我可以寻找问题。


答案 1

JavaSE 8 包含软件包。
JavaSE 9 将包移动到模块 。
与 JEE 共享的模块(如 ) 包含在 JavaSE 9 中,但
已弃用,以便从将来版本的 JavaSE 中删除,并且
不在缺省模块路径上java.xml.soapjavax.xml.soapjava.xml.wsjava.xml.ws

一个快速的解决方法是
- 使用 JRE 8 运行 jar: , 或
- 为 JRE 9 添加一个模块:$MY_JRE8_HOME/bin/java -jar my.jarjava --add-modules java.xml.ws -jar my.jar

从长远来看,使用类似模块的 JavaSE 项目必须像其他库一样显式包含该模块。java.xml.ws

请参见 https://stackoverflow.com/a/46359097
请参阅 JDK 9 迁移指南:默认情况下未解析与 JEE 共享的模块

(在 https://spring.io/guides/gs/producing-web-service/ 中重现了 NoClassDefError 和压缩 SOAP Web 服务项目的变通办法)


答案 2

在pom文件中添加以下内容解决了问题

<!-- https://mvnrepository.com/artifact/javax.xml.soap/javax.xml.soap-api -->
<dependency>
    <groupId>javax.xml.soap</groupId>
    <artifactId>javax.xml.soap-api</artifactId>
    <version>1.4.0</version>
</dependency>

推荐