Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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
Tags
more
Archives
Today
Total
관리 메뉴

horizonyeong

오류 및 JAVA_HOME 설정 본문

김영한님 강의 정리/스프링 입문

오류 및 JAVA_HOME 설정

horizonyeong 2025. 6. 26. 04:17

 

자바 중급2편까지 듣고 호기롭게 김영한님의 스프링 입문 도전!

비전공자고 윈도우 환경에서 강의를 수강했는데.. 오류가 너무 많았다

이 강의에 유독 질문글이 많더라

나와 같은 사람들이 많았고 대부분 오류관련 질문들이었다.

 

나와 다른 사람들을 위해

질문들과 답변을 보면서 오류를 해결한 과정을 포스트 하기로 했다

 

 

오류1 : Project source sets cannot be resolved ~~ 오류

프로젝트를 실행했을 뿐인데 오류가 발생했다.. 

 

Caused by: org.gradle.jvm.toolchain.internal.install.exceptions.ToolchainProvisioningException: 
Cannot find a Java installation on your machine (Windows 10 10.0 amd64) matching: 
{languageVersion=21, vendor=any vendor, implementation=vendor-specific, nativeImageCapable=false}. 
Toolchain download repositories have not been configured.

 

핵심원인은 

Gradle이 Java 21 버전을 찾으려고 했는데, 현재 PC에 Java 21이 설치되어 있지 않다는 의미
또한 Gradle toolchain의 자동 다운로드도 설정되어 있지 않아서 Java 21을 받아올 수도 없다는 상황

 

 

Progject Structure 로 들어가서

SDK를 자신이 가진 자바 버전으로 바꾼다.

나는 22버전이 으로 바꾸었다.

강의자료에서 17이상 버전을 사용하라 했으므로 그 이상으로 설정해주면 될 듯 하다.

 

그 다음으로

build.gradle 로 가서

languageVersion = JavaLanguageVersion.of(22)

괄호 안에 설정했던 버전으로 수정한다.

나는 처음 spring.io에서 자바 21버전으로 다운해서 그런지 21로 적혀있었다.

 

그리고 Gradle 설정을 위와 같이 변경

Gradle JVM 은 설치한 17이상의 자바로 설정

 

인텔리제이를 닫고 해당 프로젝트를 다시 실행하니 오류가 사라졌다..!


왜 오류가 났을까

Gradle Toolchain은 빌드할 때 어떤 JDK를 쓸지 Gradle이 직접 관리 하도록 해주는 기능

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

이렇게 쓰면 **Gradle은 "반드시 Java 21을 써서 컴파일할게"**라고 선언한 것


오류2 : 윈도우 cmd 에서 gradlew build 안됨 - Error: -classpath requires class path specification

계속 path에 문제가 있다는데

 C:\Users\USER\Desktop\hello-spring\hello-spring 디렉터리

2025-06-26  오전 01:08    <DIR>          .
2025-06-26  오전 01:08    <DIR>          ..
2025-06-25  오후 02:15                54 .gitattributes
2025-06-25  오후 02:15               444 .gitignore
2025-06-26  오전 01:08    <DIR>          .gradle
2025-06-26  오전 01:08    <DIR>          build
2025-06-26  오전 12:54               612 build.gradle
2025-06-26  오전 12:51    <DIR>          gradle
2025-06-25  오후 02:15             8,733 gradlew
2025-06-25  오후 02:15             2,937 gradlew.bat
2025-06-25  오후 02:15             1,360 HELP.md
2025-06-25  오후 02:15                34 settings.gradle
2025-06-26  오전 12:51    <DIR>          src
               7개 파일              14,174 바이트
               6개 디렉터리   8,706,154,496 바이트 남음

C:\Users\USER\Desktop\hello-spring\hello-spring>gradlew build
Error: -classpath requires class path specification

 

답답해서 찾아보니 

https://marobiana.tistory.com/163

 

windows에서 JAVA 환경변수 설정하기

이클립스 프로그램을 사용할 때(자바 개발 시) JAVA가 설치된 위치를 찾게 해주기 위해 환경변수 설정을 해야한다. 제어판 검색 제어판 > 시스템 및 보안 클릭 제어판 > 시스템 및 보안 > 시스템 클

marobiana.tistory.com

 

JAVA 환경 변수를 설정해 줘야 한다고..

해당 글을 참고해서 변수를 설정했다.

 

하지만 빌드 실패하고 오류 발생 ㅠㅠ

 

Dependency requires at least JVM runtime version 17. This build uses a Java 16 JVM.

-> Spring Boot 3.5.3 의 Gradle 플러그인은 Java 17 이상이 필요
-> 그런데 지금 빌드는 Java 16 으로 실행 중

 

C:\Users\USER>java -version
java version "16.0.2" 2021-07-20
Java(TM) SE Runtime Environment (build 16.0.2+7-67)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)

C:\Users\USER>where java
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
C:\ProgramData\Oracle\Java\javapath\java.exe
C:\Users\USER\.jdks\openjdk-22.0.2\bin\java.exe

C:\Users\USER>echo %JAVA_HOME%
C:\Users\USER\.jdks\openjdk-22.0.2

 

java -version

where java

echo %JAVA_HOME%

자바 버전이 16으로 되어있다. JAVA_HOME은 22버전

 

아니 JAVA_HOME 경로만 16버전 이상으로 해주면 된거 아니였나?!?

JAVA_HOME 경로는 정상인데 왜 java -version은 16이지??  what ㅠ

 

원인을 찾기 위해 gpt에게 물어봤다.

 

저 심볼릭 링크 때문에 16버전이 된듯 하다

 

 

%JAVA_HOME%bin을 최상단으로 이동시켰다.

 

자바 22 확인 후

강의를 따라 cmd를 실행

 

gradlew 가 있는 경로로 이동 후

gradelw build 입력 (윈도우)

 

빌드 성공 !!! ㅃ뿌뿌ㅃㅜㅇ

이후 실행 까지 성공!!

 

아.. 별거 없는 오류들 같은데 배경지식이 없으니 너무 힘들었다.. ㅠㅠ


GRADLE?

Gradle은 프로젝트 빌드 과정을 자동화하고, 필요한 외부 라이브러리(의존성)를 효율적으로 관리

개발 편의성을 높여주는 핵심 도구.


GPT 질문

인텔리제이에서 22버전인데 CMD에서는 16버전으로 돌아갔던 이유

& 해당 오류의 발생 원인 및 결론 정리

https://horizonyeong.tistory.com/11

 

1. CMD에서 build가 실패한 원인

Gradlew 는 OS 환경변수 (JAVA_HOME, PATH) 를 따라가는데 설정이 안됨

-> 환경변수 재설정으로 해결

 

2. 환경변수 설정해도 버전이 16버전

Gradlew 는 OS 환경변수 (JAVA_HOME, PATH) 를 따라가는데,
지금은 jdk-16.0.2 의 java.exe 가 PATH 에 먼저 걸려 있어서

-> 환경변수 path 수정

-> PATH 에서 JDK16 경로 제거 (또는 JDK22 경로를 PATH 제일 위로)


참고한 강의 질문과 답변

https://www.inflearn.com/community/questions/767919

 

윈도우 유저 gradlew.bat 실행 시 에러 뜹니다. - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

https://www.inflearn.com/community/questions/53961

 

[[ 강의 시청 Tip ]] 윈도우라서 맥의 iTerm이 없는데 ... - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

https://www.inflearn.com/community/questions/1504166

 

gradlew build 오류 해결완료! - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

https://velog.io/@min-zi/Java-Java-JDK-환경-변수-설정-방법과-이유-JAVAHOME-등록-Path-편집