NoClassDefFoundError:javax/xml/soap/SOAPException
我已经使用Spring创建了一个Web服务。在我的嵌入式tomcat服务器上运行时,它工作正常。但是,当我将其打包为JAR文件并使用NoClassDefFoundError:javax/xml/soap/SOAPException,java,xml,spring,soap,spring-ws,Java,Xml,Spring,Soap,Spring Ws,我已经使用Spring创建了一个Web服务。在我的嵌入式tomcat服务器上运行时,它工作正常。但是,当我将其打包为JAR文件并使用java-JAR命令运行它时,我收到了这个异常 我的服务发送一个简单的soap请求,服务器响应为: "exception": "java.lang.NoClassDefFoundError", "message": "javax/xml/soap/SOAPException", 这就是我在《邮递员》中得到的回应 任何我可以查找问题的想法。JavaSE 8
java-JAR
命令运行它时,我收到了这个异常
我的服务发送一个简单的soap请求,服务器响应为:
"exception": "java.lang.NoClassDefFoundError",
"message": "javax/xml/soap/SOAPException",
这就是我在《邮递员》中得到的回应
任何我可以查找问题的想法。JavaSE 8包括包
java.xml.soap
JavaSE 9将包
javax.xml.soap
移动到模块java.xml.ws
与JEE共享的模块(如
java.xml.ws
)包含在JavaSE 9中,但是-用于从未来版本的JavaSE中删除,以及
- 一种快速解决方法是 -使用JRE 8运行jar:
$MY\u JRE8\u HOME/bin/java-jar MY.jar
,或-为JRE 9添加模块:
java——添加模块java.xml.ws-jar my.jar
从长远来看,使用java.xml.ws
等模块的JavaSE项目必须像其他库一样显式地包含该模块
见看
(在压缩SOAP web服务项目中复制了NoClassDefError和变通方法)我导入了这一个来解决问题:在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>
javax.xml.soap
javax.xml.soap-api
1.4.0
添加以下依赖项,它应该可以正常工作
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.6</version>
</dependency>
javax.xml.bind
添加此依赖项将解决此问题
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.0</version>
</dependency>
com.sun.xml.messaging.saaj
saaj impl
1.5.0
是的,在Java 11中,Java.xml.soap被完全删除。
NoClassDefFoundError:javax/xml/soap/SOAPException可以通过添加
遵循依赖关系
<dependency>
<groupId>jakarta.xml.soap</groupId>
<artifactId>jakarta.xml.soap-api</artifactId>
<version>2.0.0-RC3</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.1</version>
</dependency>
jakarta.xml.soap
jakarta.xml.soap-api
2.0.0-RC3
但稍后,您将遇到javax.xml.soap.SOAPException:无法创建SAAJ元工厂:未找到提供程序com.sun.xml.internal.messaging.SAAJ.soap.SAAJMetaFactoryImpl。
这可以通过添加以下依赖项来解决
<dependency>
<groupId>jakarta.xml.soap</groupId>
<artifactId>jakarta.xml.soap-api</artifactId>
<version>2.0.0-RC3</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.1</version>
</dependency>
com.sun.xml.messaging.saaj
saaj impl
1.5.1
希望有帮助 缺少JAX-WS依赖关系库“jaxws-api.jar”。
尝试:
编译组:'javax.xml.ws',名称:'jaxws-api',版本:'2.3.1'
-用于gradle或:
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
javax.xml.ws
JAXWSAPI
2.3.1
您是否创建了胖jar,即依赖项是否随jar一起打包?您的项目中有一个不存在的类文件。您可能没有正确打包jar依赖项。如果缺少类文件,则会出现此错误。我可以确认Java 11缺少实现:com.sun.xml.messaging.saaj:saaj impl
。我们不需要soapapi
定义。