
JDK를 새로 깔았는데 터미널에서 java -version을 치면 여전히 예전 버전이 나오는 경우가 있습니다. 설치가 안 된 게 아니라 어떤 자바를 먼저 찾을지 정하는 PATH와 빌드 도구가 참조하는 JAVA_HOME이 서로 다른 곳을 가리키고 있어서 생기는 문제입니다. 이 글은 2026년 9월 21일 기준 오라클·마이크로소프트·Adoptium 공식 문서를 확인해 Windows와 macOS에서 기본 자바 버전을 바꾸는 순서를 정리했습니다.
3줄 결론
java -version은 PATH에서 가장 먼저 찾은 자바를 실행하고, Gradle·Maven·IDE는 보통 JAVA_HOME을 봅니다.- Windows는 설치 관리자가 만든 javapath 항목이 PATH 앞에 있으면 무엇을 깔아도 버전이 그대로입니다.
- macOS는
/usr/libexec/java_home -v 버전으로 원하는 JDK 경로를 얻어 JAVA_HOME에 넣으면 됩니다.
먼저 현재 상태부터 확인
| 확인할 것 | Windows 명령 | macOS 명령 |
|---|---|---|
| 실행되는 자바 버전 | java -version |
java -version |
| 실제 실행 파일 경로 | where java |
which java |
| JAVA_HOME 값 | echo %JAVA_HOME% |
echo $JAVA_HOME |
| 설치된 JDK 목록 | 탐색기에서 C:\Program Files\Java, C:\Program Files\Eclipse Adoptium |
/usr/libexec/java_home -V |
오라클 문서에 따르면 macOS의 JDK는 /Library/Java/JavaVirtualMachines/jdk-<버전>.jdk에 설치되고, 명령줄에서 앱을 실행하면 시스템 기본 JDK가 쓰입니다.
버전이 안 바뀌는 대표 원인
| 원인 | 어디서 생기나 | 해결 방향 |
|---|---|---|
| PATH 앞쪽에 예전 자바가 있다 | Windows 오라클 설치 시 C:\Program Files\Common Files\Oracle\Java\javapath에 java.exe·javac.exe가 복사됨 |
PATH 순서를 바꾸거나 해당 항목을 정리 |
| JAVA_HOME이 아예 없다 | Adoptium(Temurin) MSI는 PATH 갱신만 기본이고 JAVA_HOME 갱신(FeatureJavaHome)은 선택 항목 | 설치 시 옵션을 켜거나 환경 변수를 직접 추가 |
| 압축본만 풀어 놓았다 | 마이크로소프트 OpenJDK 문서 기준 ZIP·TAR.GZ은 푼 폴더를 JAVA_HOME으로 직접 지정해야 함 | JAVA_HOME과 PATH를 수동 설정 |
| 변경 후 기존 창에서 확인했다 | 환경 변수는 새로 연 터미널부터 적용 | 터미널·IDE를 완전히 종료 후 다시 실행 |
| IDE는 별도 설정을 본다 | IntelliJ의 Project SDK, Gradle JVM은 별개 | 프로젝트 설정에서 따로 지정 |
Windows에서 기본 JDK 바꾸기
- 작업 표시줄 검색창에 환경 변수를 입력하고 [시스템 환경 변수 편집]을 실행합니다.
- [고급] 탭에서 [환경 변수]를 누릅니다.
- 아래쪽 [시스템 변수] 목록에서 [새로 만들기]를 눌러 변수 이름
JAVA_HOME, 값에는 JDK 폴더 경로(예:C:\Program Files\Eclipse Adoptium\jdk-21.0.5.11-hotspot)를 넣습니다. bin 폴더가 아니라 그 상위 폴더입니다. - 같은 목록에서 Path를 선택하고 [편집]을 누릅니다.
- [새로 만들기]로
%JAVA_HOME%\bin을 추가한 뒤 [위로 이동]을 눌러...\Common Files\Oracle\Java\javapath보다 위에 둡니다. - [확인]을 세 번 눌러 모두 닫고, 열려 있던 명령 프롬프트·PowerShell·IDE를 종료합니다.
- 새 명령 프롬프트를 열어
java -version과where java로 확인합니다.
macOS에서 기본 JDK 바꾸기
- 터미널에서
/usr/libexec/java_home -V를 실행해 설치된 JDK 목록과 경로를 확인합니다. - 원하는 버전의 경로를 확인합니다. 예:
/usr/libexec/java_home -v 21 - zsh 사용자는
nano ~/.zshrc를 열고 다음 두 줄을 추가합니다.export JAVA_HOME=$(/usr/libexec/java_home -v 21)export PATH=$JAVA_HOME/bin:$PATH Ctrl+O,Enter,Ctrl+X로 저장하고 나옵니다.source ~/.zshrc를 실행하거나 터미널을 새로 엽니다.java -version,echo $JAVA_HOME으로 확인합니다.- 한 번만 다른 버전으로 실행하려면 오라클 문서의 예시처럼
/usr/libexec/java_home -v 25 --exec javac -version형태로 직접 지정할 수 있습니다.
주의사항
- JAVA_HOME에는
bin을 포함하지 않습니다....\jdk-21까지만 적습니다. - Windows에서
setx로 설정하면 현재 열려 있는 창에는 적용되지 않습니다. 새 창에서 확인하세요. - 마이크로소프트 문서는 같은 JDK 버전을 EXE·MSI·ZIP 중 한 가지 방식으로만 설치하라고 안내합니다. 방식을 바꾸려면 기존 설치를 먼저 제거해야 합니다.
그래도 안 바뀔 때 추가 점검
where java결과가 여러 줄이면 맨 위 경로가 실제로 실행되는 자바입니다. 그 경로가 어느 폴더인지 확인하세요.- PATH에
%JAVA_HOME%\bin대신 예전 JDK의 절대 경로가 남아 있는지 확인합니다. - IntelliJ는 [File] - [Project Structure] - [Project]의 SDK와 [Settings] - [Build, Execution, Deployment] - [Build Tools] - [Gradle]의 Gradle JVM을 각각 확인해야 합니다. 관련 증상은 Gradle JVM 버전 오류 해결에서 다룹니다.
- 터미널이 zsh가 아니라 bash면
~/.bash_profile을 수정해야 합니다.echo $SHELL로 확인하세요.
FAQ
Q1. JDK를 여러 개 깔아 두어도 괜찮나요?
문제없습니다. 실행 시점에 어떤 경로를 쓰는지만 명확하면 됩니다. 프로젝트별로 다른 버전을 쓰는 경우가 오히려 일반적입니다.
Q2. JAVA_HOME만 바꾸면 java -version도 바뀌나요?
PATH에 %JAVA_HOME%\bin(macOS는 $JAVA_HOME/bin)이 앞쪽에 들어 있어야 바뀝니다. 그렇지 않으면 빌드 도구만 새 버전을 씁니다.
Q3. 예전 JDK는 지워야 하나요?
반드시 지울 필요는 없습니다. 다만 사용하지 않는 버전이 PATH에 남아 혼란을 준다면 PATH 항목부터 정리하는 편이 안전합니다.
함께 보면 좋은 글
- [JAVA] JDK 설치 및 환경변수 설정
- IntelliJ Gradle JVM 버전 오류 해결: Unsupported class file major version
- IntelliJ Cannot resolve symbol 해결: Project SDK·Gradle 재동기화
공식 출처
'IT > Java' 카테고리의 다른 글
| java.lang.OutOfMemoryError: Java heap space 해결 순서: 원인 구분·힙 크기 설정·힙 덤프 수집 (JDK 26 (0) | 2026.09.24 |
|---|---|
| VS Code로 자바(Java) 개발 환경 만드는 방법: JDK·Extension Pack for Java 설치와 실행 순서 (2026년 9월 23일 확인) (0) | 2026.09.23 |
| Java 선택정렬, 버블정렬 (0) | 2020.02.14 |
| Java Wrapper class (0) | 2020.02.13 |
| Java 배열의 기초 (0) | 2020.02.13 |
댓글