TechFeedTechFeed
Programming Languages

JAVA_HOME 설정 방법 — Mac, Windows에서 환경변수 등록하기

JAVA_HOME is not set, java command not found 에러 해결법. Mac은 .zshrc에 두 줄, Windows는 환경변수 창에서 등록하면 끝난다. 버전 충돌, IntelliJ·안드로이드 스튜디오 JDK 인식 문제까지 케이스별로 정리한다.

한 줄 요약: JAVA_HOME은 자바가 설치된 폴더 위치를 운영체제에 알려주는 환경변수다. 이게 안 잡혀 있으면 터미널에서 java 명령어가 안 되거나, 스프링·안드로이드 스튜디오·Maven 같은 도구들이 자바를 찾지 못해 실행이 안 된다.

이런 에러가 나면 이 글이 필요하다
  • JAVA_HOME is not set
  • Could not find JAVA_HOME
  • java: command not found
  • 안드로이드 스튜디오·IntelliJ 실행 시 JDK를 찾을 수 없다는 오류
  • Maven 빌드 시 JAVA_HOME environment variable is not set

JAVA_HOME이 뭔가

컴퓨터에 자바를 설치하면 특정 폴더에 파일들이 들어간다. 예를 들어 Mac이라면 /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home 같은 경로가 된다. JAVA_HOME은 이 경로를 "자바 있는 곳이 여기야"라고 운영체제에 알려주는 이름표다.

이 이름표가 없으면 스프링, Maven, Gradle, 안드로이드 스튜디오처럼 자바를 필요로 하는 도구들이 "자바 어디 있어?"를 못 찾아서 실행이 안 된다. 자바를 설치했는데 왜 안 되지? 싶을 때 십중팔구 JAVA_HOME 문제다.

Mac에서 JAVA_HOME 설정하기

Mac은 터미널을 쓰는 셸(기본 zsh)의 설정 파일에 JAVA_HOME을 등록한다.

1단계 — 자바가 설치된 경로 확인

아래 명령어를 터미널에 입력하면 현재 설치된 JDK 경로를 알 수 있다.

Mac — 설치된 JDK 경로 확인
/usr/libexec/java_home # 결과 예시: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home # 설치된 JDK 전체 목록 보기 /usr/libexec/java_home -V

2단계 — .zshrc 파일에 등록

터미널에서 홈 폴더에 있는 .zshrc 파일을 열어 아래 내용을 추가한다. (bash를 쓴다면 .bash_profile 파일에 추가)

~/.zshrc 에 추가
# JAVA_HOME 등록 export JAVA_HOME=$(/usr/libexec/java_home) export PATH=$JAVA_HOME/bin:$PATH

파일을 저장한 뒤 아래 명령어로 변경사항을 현재 터미널에 바로 적용한다. (또는 터미널을 껐다 켜도 된다.)

설정 파일 즉시 적용
source ~/.zshrc

3단계 — 확인

설정 확인
echo $JAVA_HOME # /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home java -version # java version "17.0.x" ...
여러 JDK 버전이 설치돼 있다면: /usr/libexec/java_home -v 17 처럼 버전을 지정하면 해당 버전 경로만 가져온다. .zshrcexport JAVA_HOME=$(/usr/libexec/java_home -v 17) 식으로 써두면 된다.
터미널에서 JAVA_HOME 환경변수 설정 확인하는 화면
터미널에서 echo $JAVA_HOME 명령어로 설정 확인

Windows에서 JAVA_HOME 설정하기

Windows는 시스템 환경변수 창에서 직접 추가하는 방법이 가장 확실하다.

1단계 — 자바 설치 경로 확인

기본적으로 C:\Program Files\Java\jdk-17 또는 C:\Program Files\Eclipse Adoptium\jdk-17 같은 경로에 설치된다. 탐색기에서 직접 확인하거나 명령 프롬프트에서 아래 명령어로 확인한다.

Windows 명령 프롬프트 — JDK 경로 확인
where java # 결과: C:\Program Files\Java\jdk-17\bin\java.exe # bin 폴더 윗 경로가 JAVA_HOME 값이 된다

2단계 — 시스템 환경변수에 등록

  1. 윈도우 검색창에 "환경 변수" 입력 → "시스템 환경 변수 편집" 클릭
  2. 아래쪽 "환경 변수" 버튼 클릭
  3. 시스템 변수 목록에서 "새로 만들기" 클릭
    • 변수 이름: JAVA_HOME
    • 변수 값: C:\Program Files\Java\jdk-17 (본인 경로 입력)
  4. 시스템 변수에서 Path를 찾아 편집 → 새로 만들기%JAVA_HOME%\bin 추가
  5. 확인 → 확인 → 확인 (창을 모두 닫는다)

3단계 — 확인

새 명령 프롬프트(cmd)를 열고 아래를 실행한다. 환경변수는 새 창을 열어야 적용되므로 기존 cmd는 닫는다.

Windows 명령 프롬프트 — 설정 확인
echo %JAVA_HOME% # C:\Program Files\Java\jdk-17 java -version # java version "17.0.x" ...

자주 나오는 에러와 해결 방법

케이스 1: JAVA_HOME is not set 또는 Could not find JAVA_HOME
원인: JAVA_HOME 환경변수 자체가 등록되지 않았거나, 등록 후 터미널을 껐다 켜지 않음
해결: 위 Mac/Windows 등록 절차를 진행한 뒤 터미널(또는 cmd)을 새로 열고 다시 확인한다. Mac은 source ~/.zshrc를 한 번 더 실행해도 된다.
케이스 2: java: command not found
원인: PATH에 $JAVA_HOME/bin이 등록되지 않았거나 자바 자체가 설치 안 됨
해결: which java(Mac) 또는 where java(Windows)로 자바 실행 파일 위치를 확인한다. 아무것도 안 나오면 자바를 먼저 설치해야 한다. 설치 후 PATH에 $JAVA_HOME/bin을 추가한다.
케이스 3: JAVA_HOME은 잡혔는데 IntelliJ / 안드로이드 스튜디오에서 JDK를 못 찾는 경우
원인: IDE는 시스템 환경변수 대신 IDE 자체 설정에서 JDK 경로를 따로 관리하는 경우가 있음
해결: IntelliJ → File → Project Structure → SDKs에서 JDK 경로를 수동으로 지정한다. 안드로이드 스튜디오는 Settings → Build, Execution, Deployment → Build Tools → Gradle에서 JDK를 지정한다.
케이스 4: JAVA_HOME이 잡혔는데 버전이 다름 (예: 8 지정했는데 17이 뜸)
원인: 시스템에 JDK가 여러 개 설치되어 있고, PATH 우선순위 때문에 다른 버전의 java가 먼저 실행됨
해결: Mac: export JAVA_HOME=$(/usr/libexec/java_home -v 8) 처럼 버전 명시. Windows: 시스템 변수 Path에서 원하지 않는 자바 경로를 삭제하거나 순서를 조정한다.

자바 설치부터 해야 한다면

자바를 아직 설치 안 했다면 아래 공식 배포판 중 하나를 받는다. 상업용으로 쓴다면 Oracle JDK 대신 무료 오픈소스 배포판을 쓰는 게 낫다.

배포판특징공식 링크
Adoptium Temurin가장 널리 쓰이는 무료 오픈소스, Eclipse 재단 제공adoptium.net
Amazon CorrettoAWS 공식 제공 OpenJDK 배포판, 무료aws.amazon.com/corretto
Oracle JDK상업용 라이선스 확인 필요 (개인 개발은 무료)oracle.com/java
JAVA_HOMEjava환경변수개발환경JDKMacWindows

관련 포스트

Kotlin + Spring Boot 3 실전 튜토리얼 — Coroutines, JWT 인증, PostgreSQL, Docker 배포2026-04-26Axum 실전 튜토리얼 — Rust 비동기 웹 서버, JWT 인증, PostgreSQL 연동, Docker 배포2026-04-19웹 개발자를 위한 Rust 입문2026-02-28Go로 마이크로서비스 구축하기2026-03-01