티스토리 뷰

프로젝트를 import를 했더니 다음과 같은 오류가 발생하였다. 

 

javax.xml.bind 오류

javax.xml.bind.* 하위에 있는 JAXBContext, JAXBException, Unmarshaller 이런 애들을 찾을수가 없다고 나온다. 

 

원인을 파악해보니 import 한 프로젝트는 JDK 1.8로 진행을 했는데 내 로컬 개발환경(STS)에서는  JDK 11 버전을 사용하고 있어서 위와 같은 오류가 발생을 한 것이다. 이게 다른데 왜 오류가 발생하냐면 JDK 11에서는 jaxb dependency가 사라졌기 때문이다. 즉 JDK 1.8이 설치되어 있으면 jaxb를 따로 종속성 추가를 해주지 않아도 되었었는데 JDK 11 부터는 별도로 넣어줘야 한다는 것이다. 

 

조치는 다음과 같이 JDK 11으로 되어 있는 설정을 바꿔주면 된다. 

 

이클립스 Java 버전 변경하기 

이클립스 JDK 설정

이클립스 상단의 Window > Preferences > Java > Installed JREs 로 들어가서 현재 사용하고 있는 JDK 버전을 확인한다. 11버전만 있으므로 Add를 눌러서 8버전을 이클립스 환경에 추가를 해준다. 

 

이클립스 JRE 추가

Standard VM 선택 > Next

 

이클립스 JRE 추가

JDK가 있는곳의 위치를 선택하고 Finish

 

이클립스 JRE 추가

default jdk 1.8로 변경해도 되고 11을 그대로 선택해도 된다. 이건 전역설정이므로 해당 프로젝트에만 할수 있다. 

Apply and Close 를 선택하고 Windows Preferences 설정을 마친다. 

 

그 다음은 프로젝트의 Java 설정을 해줘야 한다. 위의 것이 전역설정이라면 이것은 지역설정에 해당한다. 

 

Java Build Path 설정

프로젝트 우클릭을 하여 Properties 로 진입을 한다. 그리고 Java Build Path 로 들어가본다. 그럼 위와 같이 여전히 JRE System Library 는 JDK 11로 설정이 되어 있을것이다. Edit 를 눌러서 수정해준다. 

 

Java Build Path 설정

방금 추가한 JDK 1.8 버전으로 설정하고 Finish 선택!

 

그러면 빌드가 될것이고 곧 javax.xml.bind.* 관련 오류가 사라지는 것을 볼 수 있다. 


혹시 JDK 버전을 11로 변경해서 사용을 하고 싶은 경우에는 javax.xml.bind.* 관련 라이브러리를 직접 추가를 해줘야 한다. 

 

pom.xml

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

 

이와 유사하게 JDK 1.8 에서 11로 변경됨에 따라 추가해야 되는 dependency는 다음과 같다. 

 

 

  • jaxb-core
  • jaxb-impl
  • javax.activation
  • javax.annotation-api
  • asm

끝!

 

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31