[SpringBoot] Gradle 프로젝트 생성 시 Java 17 인식 오류 해결 과정
항상 Maven 프로젝트만 사용하다보니 Gradle 프로젝트를 간단한 블로그 프로젝트로 만들어 보려고 했다. 하지만 프로젝트 생성 과정에서 예상치 못한 문제에 부딪혔다.
문제 상황
Spring Boot 프로젝트를 Gradle로 생성하려고 하는데 다음과 같은 오류가 발생했다.
분명히 JDK 17은 설치되어 있었고, 명령프롬프트에서 java -version을 실행하면 17 버전이 정상적으로 출력되었다. 하지만 Eclipse에서 Spring Boot 프로젝트를 생성할 때만 Java를 찾지 못한다는 오류가 계속 발생했다.
시도한 해결 방법들
1. Eclipse JRE 설정 확인
Eclipse의 Window → Preferences → Java → Installed JREs에서 확인해보니 jdk-17이 목록에는 있었지만 체크되어 있지 않았다. jre (default)만 체크되어 있는 상태였다.
jdk-17을 체크하고 기본값으로 설정한 후 다시 시도했지만 여전히 같은 오류가 발생했다.
2. 환경변수 설정
시스템 환경변수를 확인해보니 PATH에는 C:\Program Files\Java\jdk-17\bin이 설정되어 있었지만, JAVA_HOME은 설정되어 있지 않았다.
시스템 환경변수 편집에서 다음과 같이 추가했다.
- 변수 이름: JAVA_HOME
- 변수 값: C:\Program Files\Java\jdk-17
설정 후 명령프롬프트에서 확인해보니 정상적으로 설정되었다. Eclipse를 재시작한 후 다시 시도했지만 여전히 같은 오류가 발생했다.
echo %JAVA_HOME%
echo %PATH%
java -version
javac -version
최종 해결 방법
결국 Eclipse의 Gradle 설정에서 직접 Java 경로를 지정하는 것으로 해결되었다.
Window → Preferences → Gradle에서
- Java home: C:\Program Files\Java\jdk-17 경로 선택
- Apply and Close 클릭
- Eclipse 재시작
이후 Spring Boot 프로젝트 생성이 정상적으로 완료되었다.
왜 이런 문제가 발생했을까?
PATH vs JAVA_HOME의 차이
PATH: 명령어를 어디서 찾을지 알려주는 경로
- java, javac 같은 명령어를 실행할 때 사용
- C:\Program Files\Java\jdk-17\bin 설정
JAVA_HOME: Java 설치 폴더를 알려주는 환경변수
- 프로그램들이 Java 관련 파일들을 찾을 때 사용
- C:\Program Files\Java\jdk-17 설정 (bin 제외)
Maven vs Gradle의 차이
Maven은 상대적으로 관대해서 PATH만 설정되어 있어도 Java를 잘 찾아낸다. 하지만 Gradle은 더 엄격해서 JAVA_HOME을 명시적으로 요구한다. 특히 Gradle의 Toolchain 기능 때문에 정확한 Java 위치가 필요하다.
Eclipse의 특성
Eclipse는 독립적인 환경에서 실행되기 때문에 시스템 환경변수보다 IDE 내부 설정을 우선시한다. Eclipse Gradle 플러그인은 자체 설정을 먼저 참조하기 때문에, 환경변수를 올바르게 설정하고 Eclipse를 재시작해도 문제가 해결되지 않을 수 있다.
해결 방법 정리
Spring Boot + Gradle 프로젝트에서 Java 인식 오류가 발생한다면 다음 순서로 해결해보는 것을 추천한다.
- JDK 설치 확인: 명령프롬프트에서 java -version, javac -version 확인
- 환경변수 설정: JAVA_HOME과 PATH 모두 올바르게 설정
- Eclipse 내부 설정: Window → Preferences → Gradle → Java home 직접 설정
- Eclipse 재시작: 설정 변경 후 반드시 재시작
필자의 경우 환경변수를 설정한 후 컴퓨터를 재부팅하지 않고 바로 프로젝트 생성을 시도했기 때문에, Eclipse 내부 설정을 직접 해줘야 했을 수도 있다. 하지만 재부팅을 해도 Eclipse Gradle 플러그인의 특성상 내부 설정이 필요한 경우가 발생할수도 있으니, 처음부터 Eclipse 내부 설정을 하는 것이 시간을 절약하는 방법이다.