- 관련 글
- [Environment·Tool] - IntelliJ에서 Groovy 프로젝트 생성하고 테스트 코드 실행하기
[Groovy] Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/JAXBContext 에러 원인과 해결 방법
Groovy 프로젝트를 빌드했을 때 이와 같은 에러가 발생한다면,
Information:Groovyc: While compiling testGroovy:java.lang.NoClassDefFoundError: Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/JAXBContext at org.codehaus.groovy.vmplugin.v8.Java8.configureClassNode(Java8.java:456) at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:273) at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:395) at
...
일단 해당 groovy 프로젝트의 JDK 버전을 확인해보자.
아마 JDK 버전 9 이상일 것이다.
이렇게 JDK 버전 9 이상을 사용할 경우 JAXB 종속성을 추가해줘야 하기 때문에 JAXB 라이브러리를 추가하지 않을 경우 이런 에러가 발생한다.

나 같은 경우 JDK 11 + groovy 3 조합에서 이 에러가 발생했다.
해결 방법은 2가지가 있다.
JDK 버전을 8 이하로 변경하는 방법과 JAXB 종속성을 추가하는 방법이다.
해결 방법 1 - JDK 버전 변경

JDK를 1.8로 변경하고 다시 빌드해보자.

아까와 달리 빌드가 정상적으로 될 것이다.
해결 방법 2 - JAXB 종속성 추가
JDK 버전을 바꾸지 못하는 상황이라면 프로젝트에 JAXB 종속성을 추가해준다.
JAXB jar 파일들은 groovy SDK에 포함되어 있다.

Groovy SDK 홈\lib\extras-jaxb에 해당 jar파일들이 있다.

Groovy 프로젝트 dependency에 이 디렉토리를 추가해준다.
그리고 다시 빌드해보면 마찬가지로 정상적으로 될 것이다.
혹시 자바 9 이상에서 JAXB jar 파일들을 추가해도 에러가 난다면 VM 옵션에 아래 옵션을 추가한다.
--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED

참고로 amazon corretto 11 + groovy 3 조합에서는 JAXB 라이브러리만 추가해줌으로써 해당 에러가 해결되었다.
- 관련 글
- [Environment·Tool] - IntelliJ에서 Groovy 프로젝트 생성하고 테스트 코드 실행하기
References
https://www.logicbig.com/tutorials/misc/groovy/intellij.html
'Environment·Tool' 카테고리의 다른 글
IntelliJ Gradle 버전 다운그레이드 (5.x -> 4.x) 방법 (0) | 2020.03.22 |
---|---|
[Git] Git Bash 사용 방법 - init, status, add, commit, log (0) | 2020.03.04 |
IntelliJ 플러그인 추천 - 한/영(Korean to English) 번역기 (1) | 2020.02.08 |
Fiddler - localhost(127.0.0.1)만 capture 하는 Filter 설정 방법 (0) | 2020.02.03 |
JAVA 웹 개발 환경 구축 - Eclipse + JDK + Tomcat 설치 및 연동 (1) | 2020.02.01 |
댓글