JAVA
[Spring Boot] Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
milna
2023. 10. 25. 04:40
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