버그리포트

스프링 부트를 자바 9+ 업데이트 한 후에 발생하는 ClassNotFoundException: JAXBException 오류

와니's(Wani) 2021. 4. 29. 10:50

도입부


최근 Java 11을 기본으로 사용하고 있다.

자바 8은 그만큼 오래된 버전이기도 하고 곧있으면 종료한다길래 차츰차츰 적응해보고자 11로 모든 프로젝트를 마이그레이션 하고 있었다.

 

하지만 Java 11로 업그레이드 한 후에는 다음과 같은 오류를 확인할 수 있었다.


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:199) at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:618) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:467) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:120) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691) at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) at org.springframework.boot.SpringApplication.run(SpringApplication.java:952) at org.springframework.boot.SpringApplication.run(SpringApplication.java:941) at com.apress.isf.spring.HelloWorldController.main(HelloWorldController.java:20) Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException ...

 

요약을 하자면 java.lang.ClassNotFoundException 이다. JAXB를 찾을수 없다고 한다.

 

 

 

원인을 찾아보자


관련 오류를 찾아보니 JAXB는 Java EE로 바뀌면서 Java 9 버전 이상부터는 더이상 기본적으로 포함되지 않는다고 한다.

자바 11부터는 JDK에서 방출 되었다고 한다.

 

 

 

 

해결 방법


해결 방법은 간단하다. 프로젝트에 JAXB 관련 디펜던시를 추가해주면 된다.