오류/Spring

java.lang.ClassNotFoundException: javax.xml.bind.JAXBException

빨대도둑 2024. 3. 12. 09:18

발생 상황

  • Java 8에서 Java 11로 버전 업그레이드 하였는데 이와 같은 에러가 발생하였다. 
    • 자바 8에서는 정상적으로 작동했었다. 

 

발생 원인

  • Java 8 -> Java 9 버전업 시 해당 모듈이 제거됐다고 한다. 
  • Java SE 9: JAXB API를 Java EE API로 간주해 기본 클래스 경로에 포함하지 않음
  • Java 11: JAXV API를 JDK에서 아예 제거

 

해결 방식

1차로 다음의 글을 보고 참조하여 해결하였다. 

https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception

 

How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

I have some code that uses JAXB API classes which have been provided as a part of the JDK in Java 6/7/8. When I run the same code with Java 9, at runtime I get errors indicating that JAXB classes ...

stackoverflow.com

 

그래서 MAVEN을 다음과 같이 바꿔준다

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

 

Gradle의 경우에는 다음과 같이 설정해준다. 

implementation 'javax.xml.bind:jaxb-api:2.3.0'

 

참조 글

https://yeonyeon.tistory.com/240

 

[Java] java.lang.ClassNotFoundException: javax.xml.bind.JAXBException 에러

java.lang.ClassNotFoundException: javax.xml.bind.JAXBException 에러 🤔 상황 Java 8에서 Java 11로 버전 업그레이드 😱 원인 Java 8 -> Java 9 버전업 시 해당 모듈이 제거됨 Java SE 9: JAXB API를 Java EE API로 간주해 기본

yeonyeon.tistory.com