티스토리 뷰
프로젝트를 import를 했더니 다음과 같은 오류가 발생하였다.
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 버전 변경하기
이클립스 상단의 Window > Preferences > Java > Installed JREs 로 들어가서 현재 사용하고 있는 JDK 버전을 확인한다. 11버전만 있으므로 Add를 눌러서 8버전을 이클립스 환경에 추가를 해준다.
Standard VM 선택 > Next
JDK가 있는곳의 위치를 선택하고 Finish
default jdk 1.8로 변경해도 되고 11을 그대로 선택해도 된다. 이건 전역설정이므로 해당 프로젝트에만 할수 있다.
Apply and Close 를 선택하고 Windows Preferences 설정을 마친다.
그 다음은 프로젝트의 Java 설정을 해줘야 한다. 위의 것이 전역설정이라면 이것은 지역설정에 해당한다.
프로젝트 우클릭을 하여 Properties 로 진입을 한다. 그리고 Java Build Path 로 들어가본다. 그럼 위와 같이 여전히 JRE System Library 는 JDK 11로 설정이 되어 있을것이다. Edit 를 눌러서 수정해준다.
방금 추가한 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
끝!
'Lang > Java' 카테고리의 다른 글
Java에서 Mobile Device 체크하기 (1) | 2021.05.21 |
---|---|
엑셀 업로드시 Excel import exception : NotOLE2FileException 오류 조치 (0) | 2021.05.21 |
JAVA_HOME (환경변수) 설정이 잘 안되는 오류 조치 (10) | 2021.04.09 |
JAVA OpenJDK Zulu 설치 방법 및 JAVA_HOME 설정 (0) | 2021.04.09 |
Java에서 File to MultipartFile , MultipartFile to File 변환하기 (1) | 2021.03.03 |