Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoClassDefFoundError:javax/xml/soap/SOAPException_Java_Xml_Spring_Soap_Spring Ws - Fatal编程技术网

NoClassDefFoundError:javax/xml/soap/SOAPException

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

我已经使用Spring创建了一个Web服务。在我的嵌入式tomcat服务器上运行时,它工作正常。但是,当我将其打包为JAR文件并使用
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
定义。