상세 컨텐츠

본문 제목

[Java][Maven][IntelliJ] java.lang.NoClassDefFoundError

Log.Develop/SpringBoot

by bluayer 2020. 4. 23. 16:33

본문

서론

자바로 프로젝트 세팅을 하던 중,

main 함수를 실행했는데 이런 에러가 발생했다.

찾아보니, java version 때문에 생긴 일이라고 생각되었으며 여러 가지 해결방법이 있었다.

그러나 언제나와 같이 한 두 가지 방법을 시도해도 안 되었기 때문에,

다음과 같이 해결 방법 3가지를 정리해보았다.

 

개발 환경

필자의 개발 환경은 다음과 같다.

OS : macOS Catalina

Device : Macbook pro early 2015

Java version : 11 (1.11)

IDE : IntelliJ

Project Management Tool : Maven

 

해결 방법

1. IntelliJ에서 자바 버전 확인하기

1) command + ';' (Project Strucuture 열기)

2) Project SDK랑 Project language level 버전이 동일한지 확인

 

Project SDK와 Preoject language level이 같은지 확인한다.

 

2. IntelliJ에서 compiler 확인하기 

1) command + ',' (Preferences 열기)

2) 왼쪽 상단에 Compiler 검색 || Build, Execution, Deployment 항목의 하위 항목인 Compiler 열기

 

이렇게 검색해서 찾는다.

 

3) Compiler의 하위 메뉴인 Java Compiler 들어가기

4) Project bytecode version과 Module의 Target bytecode version 맞춰주기

(11버전이라면 Target bytecode version은 1.11)

 

위와 같이 세팅하거나 본인이 사용하고 있는 자바 버전으로 맞춘다.

 

3) jaxb-api와 관련된 dependency 추가

Java SDK 9 버전 이상부터 jaxb api 관련 클래스들을 사용할 수 없다.

(EE 버전에서는 사용이 가능하다)

따라서 위와 같은 문제가 생기는 것이다.

 

해결 방법은 gradle이든, maven이든 jaxb-api와 관련된 dependency를 추가하는 것이다.

지금 이 포스트에서는 maven에서 해결하는 방법을 소개하겠다.

 

1) pom.xml 열기

2) jaxb-api와 관련한 dependency 추가

 

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

 

3. Maven dependencies 새로고침

관련글 더보기

댓글 영역