본문 바로가기

JAVA

[Spring Boot] Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException

Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 12 more

JDK 11 버전으로 스프링 부트 프로젝트를 진행을 하니 오류가 발생하며 실행이 되지 않았다.

원인은 JDK 9 이상 버전에서는 더이상 JAXB에 대한 의존성을 제공하지 않기 때문.

 

* JAXB

확장성 생성 언어(XML) 문서와 자바 객체간 매핑을 자동화하는 응용 프로그램 인터페이스를 제공하는 자바 API.

자바 객체를 XML로 직렬화하고, XML에서 자바 객체로 역직렬화한다.

메모리의 데이터를 XML 형식으로 변환하여 저장할 수 있고, 이 과정을 위해 프로그램의 각 클래스에서 XML을 읽고 저장하는 일을 구현해야 한다.

 


해결법

JDK 8 버전으로 맞춰주거나, 필요한 의존성을 주입해준다.

<dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>

maven

 

implementation 'org.glassfish.jaxb:jaxb-runtime'

gradle