티스토리 뷰

들어가며

  • SOAP API 관련 개발을 하다가 아래 에러 메시지를 마주쳤다. 
Caused by: java.lang.NoClassDefFoundError: javax/xml/soap/SOAPMessage
   at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na]
   at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3171) ~[na:na]
   at java.base/java.lang.Class.getDeclaredMethods(Class.java:2314) ~[na:na]
   at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.2.2.RELEASE.jar:5.2.2.RELEASE]
   ... 59 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.xml.soap.SOAPMessage
   at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) ~[na:na]
   at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
   ... 63 common frames omitted
  • 여러 장비에서 실행을 하면서 Java 버전이 다를 뿐이었는데 (Java8, Java12) 문제가 발생했다.

해결방법

  • Java 버전이 문제였다.
    • Java9 버전부터 SOAP 관련 패키지가 javac.xml.soap 에서 java.xml.ws 로 옮겨졌다고 함
  • 간단하게 해결하기 위해서는 아래 의존성을 추가해주자.

Maven

<dependency>
    <groupId>javax.xml.soap</groupId>
    <artifactId>javax.xml.soap-api</artifactId>
    <version>1.4.0</version>
</dependency>

 

Gradle

compile group: 'javax.xml.soap', name: 'javax.xml.soap-api', version: '1.4.0'

참고

 

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

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

stackoverflow.com

반응형
댓글