티스토리 뷰

SMALL

 해당 스프링 입문 강의를 듣다가 발생한 초반 오류입니다. Intellij를 사용하고있습니다.

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세

www.inflearn.com

 

 

1. 오류 설명 

 build.gradle에서 로드가 안되는 문제가 발생하였고 그외에도

Could not resolve all files for configuration ':classpath'  및 unsupportedclassversionerror 오류도 경험하였는데

해당 오류들은 비슷한 해결책을 가지고 있어서 함께 쓰게 되었습니다.

 

첫번째 gradle 로드 오류는 springframework.boot부분이 로드가 되지 않았습니다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.2'
	id 'io.spring.dependency-management' version '1.1.2'
}

 

 

unsupportedclassversionerror오류는 Git bash를 통해 빌드하고 실행하는 중에 발생한 오류입니다.

일단 저는 window를 쓰기 때문에 해당 spring파일로 이동하여 아래와 같은 코드로 build와 실행을 시도하였습니다.

// build
./gradlew.bat build	// windows사용 시

./gradlew build // mac사용 시
cd build
cd libs

java -jar spring-0.0.1-SNAPSHOT.jar	// 실행

 

build에서는 아래와 같은 오류가 발생하였고,

java spring please set the java_home variable in your environment to match the location of your java installation.

 

실행에서는 unsupportedclassversionerror 오류가 발생하였습니다.

java.lang.unsupportedclassversionerror: org/springframework/boot/loader/jarlauncher has been compiled by a ...

 

 

 

2. 오류 원인 및 해결 방법

2-1 gradle load문제

 springboot 3.0이상부터는 Java17이상만 지원한다고 합니다. 즉 JDK를 17버전 이상을 다운받고 사용해야합니다.

제가 사용하던 JAVA는 11이었고 oracle.com에서 JAVA17.0.1를 다운받았습니다.

Java Archive Downloads - Java SE 17 (oracle.com)

다운받은 후 설치하고

인텔리제이의 Settings > Build, Execution, Deployment > Gradle JVM에서 JAVA 17.0.1로 바꾸어주면 잘 작동하는 것을 확인할 수 있습니다.

 

+ 추가 내용

 shell을 통해 java기존 버전에서 업데이트를 할 수 있습니다.

$ yum install -y java-17.0.1-openjdk

 

 

2-2 build 문제

 build에서 발생한 오류는 인텔리제이의 Settings에서 JAVA17.0.1를 설정했음에도 Git bash JAVA version이 기존에 있던 11버전이라는 것을 알게되었습니다. 아래 명령어로 현재 자신의 컴퓨터에 설정된 java버전을 알 수 있습니다.

JAVAC -version

 

* build 문제 추가 설명 (시간 없으면 패스하시길 바란다)

java spring please set the java_home variable in your environment to match the location of your java installation. 오류는

환경변수인 java_home과 java 설치 위치가 다르게 설정되어있다는 것을 알 수 있습니다.

즉, 위에서 설명했듯이 저는 JAVA17버전을 설치했음에도 java_home에는 기존에 설치되어있던 java 11버전이 저장되어있어 발생하는 오류라고 알 수 있습니다. 

* java_home : 환경변수로써 jdk가 설치된 경로를 저장해두는 환경변수이므로 설치된 경로와 일치해야한다.

환경변수는 자신의 컴퓨터에 적용되어있는 조건이다.

 

 

- shell로 해결하는 방법 

 JAVA version을 바꾸어주기 위해 set명령어 + 자신의 java파일 경로(설치위치)를 적어주면 해결됩니다.

 set Java_HOME=C:\Program Files\Java\jdk-17.0.1

 

- shell로 해결되지 않는다면

 shell set명령어로 해결되지 않았다면 시스템 속성 고급에 들어가 직접 JAVA_HOME 환경변수를 설정해주어야합니다.

set명령어로 해결되지 않았을 때는 환경변수로 JAVA_HOME명령어가 처음부터 존재하지 않았을 수 있습니다.

 

windows사용 시, 시스템 속성> 고급(고급 시스템 설정 보기) > 환경 변수 > 시스템 변수로 들어갑니다.

시스템 변수에 JAVA_HOME이 있다면 JAVA_HOME '편집'을 눌러 변수 값에 자신이 설치한 java 설치 경로를 넣어주면 됩니다.

 

시스템 변수에 JAVA_HOME이 없다면 '새로 만들기'를 클릭하여 변수 이름은 JAVA_HOME, 변수 값은 설치한 java 설치 경로를 넣어주시면 됩니다.

 

 마지막으로 인텔리제이의 Settings > Build, Execution, Deployment > Gradle JVM에서 JAVA_HOME을 선택해주시면 됩니다. 

*git bash도 다시 실행하시길 바랍니다.

 

 

3. unsupportedclassversionerror 오류

unsupportedclassversionerror 오류도 위에 설명했던 오류 해결법과 같은데, 위와 같은 해결방법으로도 해결이 되지 않았다면 해당 해결방법이 있다.

일단 발생한 오류를 자세히 보면 아래와 같다.

java.lang.unsupportedclassversionerror: org/springframework/boot/loader/jarlauncher has been compiled by a more recent version of the java runtime (class file version 61.0), this version of the java runtime only recognizes class file versions up to 55.0

컴파일된 자바 버전보다 빌드 자바 버전이 낮은가보다. 컴파일과 빌드 자바 버전이 동일해야한다는 이전의 오류와 해결책이 같다고 볼 수 있다.

JAVAC -version

java 버전을 확인해 보니 아직도 java11 버전이었고, 결국 java11버전을 삭제하는 것을 선택했다.

JAVA11를 삭제하니 JAVA17버전이 적용되는 것을 볼 수 있었다.

이전 JAVA버전을 삭제하는 것은 마지막에 시도해보길 추천한다.

반응형
LIST
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함