본문 바로가기

개발/Spring

cmd 사용 중 Gradle 빌드 오류 톺아보기(스프링 부트와 자바의 버전 호환 오류) + 자바 환경 설정에 대한 고찰

cmd 사용 중 Gradle 빌드 오류 톺아보기

김영한 님의 Spring 강의를 보며 따라하던 중 또 난관에 닥쳤다.

 

'빌드하고 실행하기' 파트를 따라하는데 인텔리제이에서는 빌드가 잘 되는데 cmd로 하면 오류가 발생하며 안되는 것이다ㅠㅠ

문제의 오류

오류를 살펴보니 '사용하는 스프링 부트 버전자바 버전호환되지 않는다.'는 뜻이었다.

 

No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.2.1 was found. The consumer was configured to find a library for use during runtime, compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.5'

 

해당 오류 문장의 아래 내용을 참고하면 해당 스프링 부트 버전은 자바 17버전과 호환된다는 내용도 볼 수 있다.

 

하지만!!!

 

나는 이미 자바 17버전을 사용하고 있었다. 스프링 부트 공부를 시작하고 인텔리제이를 설치하면서 처음으로 gradle을 빌드할 때 해당 오류가 발생했었다. 그래서 자바 17버전을 깔아서 재설정을 했었다. 빌드도 성공적으로 됐다. (근데 사실 여기에 나의 대박 빅똥이 있었다..)

 

구글에 검색을 해보니 인텔리제이 설정을 확인하라고 해서 다시 확인도 해보고 cmd에서 자바와 자바 컴파일러 버전도 확인하라고 해서 java -version과 javac -version으로 자바와 자바 컴파일러의 버전을 확인해봐도 17버전이라고 나왔다.

 

대체 뭐가 문제일까 고민에 고민을 거듭했다. 해가 쨍쨍할 때 시작했는데 어느덧 카페 창 밖이 컴컴했다. 초조했다. 몇 시간 뒤에 약속이 있어서 시간도 얼마 없었는데 그 전에 꼭 해결하고 가고 싶었다.

 

그러던 중, 불현듯 저번에 jdk-17을 깔고나서 인텔리제이로 자바 버전 설정을 할 때 잠깐 들었던 생각이 다시 떠올랐다.

 

'아니 근데 이거 JAVA-HOME은 안 바꿔도 되나??'

 

근데 이 바보같은 놈이 빌드를 다시 돌리고 되니까 그냥 넘어간 것이다.

 

JAVA_HOME을 jdk-17로 바꿔주니 빌드와 실행에 성공했다.

 

부디 이 글이 저와 같은 병아리 개발자 분들에게 조금이라도 도움이 됐으면 좋겠습니다.

 

 

자바 환경 설정에 대한 고찰

빌드 문제는 해결했지만 몇 가지 의문점이 생겼다. 바로 'JAVA_HOME 설정 이유'와 '그 전에는 JAVA_HOME에 자바 11버전이 설정되어 있었는데 왜 cmd에서 버전 확인을 했을 때는 17버전이 나왔는지', '자바 17버전으로 설정되어 있는 인텔리제이에서는 왜 프로그램이 실행됐는지' 이다.

 

현재 이클립스와 STS에는 자바가 11버전으로 설정되어 있고, 인텔리제이에는 17버전으로 설정되어 있다. JAVA_HOME이 11버전으로 설정되어 있을 때도 인텔리제이에서 서버를 돌리면 잘 돌아갔다. 한 번 JAVA_HOME을 삭제하고 path에 설정된 bin 경로도 삭제를 하고 이클립스와 인텔리제이로 서버를 돌려봤는데 각각 잘 돌아갔다. '이러면 JAVA_HOME을 왜 설정하는거지??'라는 의문이 들었다.

 

자바는 운영체제로부터 독립적으로 움직이고 그 역할을 JVM이 대신한다. 하지만 최종적으로는 운영체제에게 파일을 읽혀서 프로그램을 돌려야 한다고 알고 있다.

 

그렇다면 인텔리제이(자바 17버전)로 프로그램을 실행했을 때도 실패했어야 하지 않나..?? JAVA_HOME(자바 11버전)과 자바 버전이 달랐으니까 말이다. IDE가 자체적으로 JAVA_HOME으로 설정된 경로를 무시하고 처리하는건지 뭔지는 조금 더 공부를 해봐야 할 것 같다.

 

새로운 의문점이 생겨서 기쁘다ㅎㅎ 다음에 제대로 공부한 후에는 '또 내가 제대로 몰라서 바보같은 생각을 했구나..'라며 깨달을 게 뻔하지만 그게 또 자양분이 될 것이다.

 

하여튼 이 문제는 자세히 조사해서 다음 게시물로 들고 오겠드아!! 커밍쑨!!!

 

[ 참고 ]
JAVA_HOME과 path는 자바 환경 설정을 할 때 고급 시스템 설정에 들어가서 하는 작업이다.
환경변수>시스템변수>새로 만들기
로 들어가서 변수 이름은 JAVA_HOME, 변수 값은 jdk의 설치 경로를 입력해주면 된다.
JAVA_HOME 설정 방법

 

이후 path라는 변수 이름을 찾아서 들어간 다음 아래와 같이 경로 설정을 하면 된다.
path 설정 방법

 

혹시 잘못 기재된 내용이 있다면 댓글로 따끔하게 혼내주십쇼!!

감사함다~!~!