728x90
maven 프로젝트를 gradle로 변환하면서 프로젝트 셋팅 중 아래와 같은 오류를 접하게 되었습니다.
Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError;
문제 원인 분석
해당 오류는 jaxb-api를 호출하지 못하여 발생한 오류였고 생각보다 쉽게 해결이 가능했습니다.
문제 해결
build.gradle 파일에 아래와 같은 의존성을 추가해주면 해결됩니다.
dependencies {
implementation 'javax.xml.bind:jaxb-api:2.2.11'
}
기타
jaxb-api에 대해 간단히 알아보도록 하겠습니다.
jaxb-api?
- Java Architecture for XML Binding API로 Java에서 XML 데이터와 Java 객체간의 상호 변환을 지원하는 API
- jaxb는 xml 데이터를 java로 변환, java 객체를 xml로 직렬화하는데 사용되어 xml 데이터를 관리하기 용이
- jaxb를 사용하기 위해서는 xml 데이터를 직접 파싱, DOM이나 SAX와 같은 다른 xml 파서를 사용할 필요가 없음
- jaxb는 xml 데이터를 java 객체로 변환하는 양방향 바인딩을 제공함으로 java 객체를 xml로 다시 변환 가능
- jaxb-api는 JDK에 포함되어 제공되며 Java SE 6 이상에서 사용이 가능
- jaxb를 사용하기 위해서는 jaxb-api 라이브러리와 jabx 구현체를 이용해야 합니다.
728x90