I have created a Web Service using Spring. It works fine when running it on my embedded tomcat server. However when I package it as a JAR file and run it with java -jar
command, I am receiving this exception.
My service sends a simple soap request and the server response is:
"exception": "java.lang.NoClassDefFoundError",
"message": "javax/xml/soap/SOAPException",
That's the response I get in Postman.
Any ideas where I can look for the problem.
Adding this dependency will solve the issue.
Yes, In Java 11 java.xml.soap was completely removed. java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException can be removed by adding the following dependency.
But later, you will encounter , javax.xml.soap.SOAPException: Unable to create SAAJ meta-factory: Provider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found. This can be solved by adding the following dependency.
Hope, it helps!
JavaSE 8 includes package
java.xml.soap
.JavaSE 9 moved package
javax.xml.soap
to the modulejava.xml.ws
.Modules shared with JEE (like
java.xml.ws
) are included in JavaSE 9, but are- deprecated for removal from a future version of JavaSE, and
- not on the default module path.
A quick workaround is to either
- run the jar with JRE 8:
$MY_JRE8_HOME/bin/java -jar my.jar
, or- add a module for JRE 9:
java --add-modules java.xml.ws -jar my.jar
Longer term, JavaSE projects that use modules like
java.xml.ws
must explicitly include the module like other libraries.See https://stackoverflow.com/a/46359097
See JDK 9 Migration Guide: Modules Shared with JEE Not Resolved by Default
(Reproduced NoClassDefError and workarounds with zipped SOAP web service project at https://spring.io/guides/gs/producing-web-service/)
Adding the following in pom file solved the issue
Add the following dependencies, it should work then
Refer the following links for a running piece of code (SpringBootSOAPWS + Java10) Github- SpringBoot Soap Server Github- SpringBoot Soap Client
I imported this one to sort out the issue: https://mvnrepository.com/artifact/javax.xml.soap/javax.xml.soap-api/1.4.0