IT 오류해결/윈도우·부팅 오류

윈도우11 자바 환경변수 설정|JAVA_HOME·Path·javac 경로오류 해결

잡가이버 2026. 8. 7. 10:34
반응형

윈도우11 자바 환경변수 JAVA_HOME Path JDK 설치경로 설정
Windows 11 Java JDK 환경변수와 JAVA_HOME·Path 설정방법

Windows에 Java JDK를 설치했는데 명령 프롬프트에서 java 또는 javac 명령어를 찾을 수 없습니다라는 오류가 나타날 때가 있습니다.

JDK가 정상적으로 설치돼 있어도 Windows가 실행 파일의 위치를 찾지 못하거나, 이전에 설치한 다른 Java 버전을 먼저 불러오면 이런 문제가 발생합니다.

이럴 때 확인해야 할 핵심 항목이 JAVA_HOMEPath 환경변수입니다.

다만 과거 설정방법처럼 `JAVA_HOME`, `Path`, `CLASSPATH`를 무조건 모두 추가할 필요는 없습니다. 일반적인 최신 Java 개발 환경에서는 JAVA_HOME과 Path만 정확하게 설정하고, 전역 CLASSPATH는 등록하지 않는 편이 안전합니다.

자바 환경변수 설정 3줄 요약

1. `JAVA_HOME`에는 `bin`이 아닌 JDK 최상위 설치 폴더를 입력합니다.

2. Windows Path에는 %JAVA_HOME%\bin을 한 줄로 추가합니다.

3. 설정 후 새 CMD를 열어 `where java`, `java -version`, `javac -version`을 확인합니다.

Java JDK·JRE·JVM 차이

환경변수를 설정하기 전에 JDK, JRE와 JVM의 역할부터 구분해야 합니다.

구분 역할 주요 구성요소
JDK Java 프로그램 개발과 실행 java, javac, jar, javadoc, jshell, JVM과 런타임
JRE Java 프로그램 실행 환경을 뜻하는 개념 JVM과 Java 표준 라이브러리
JVM 컴파일된 Java 바이트코드 실행 메모리 관리, 클래스 로딩과 코드 실행

최신 Java 개발이나 컴파일이 목적이라면 별도의 구형 JRE 설치 파일보다 JDK를 설치하는 것이 기본입니다.

JDK의 `bin` 폴더에는 다음과 같은 명령어가 포함됩니다.

명령어 기능
java 컴파일된 Java 클래스와 JAR 파일 실행
javac .java 소스 파일을 .class 바이트코드로 컴파일
jar Java 클래스와 리소스를 JAR 파일로 묶거나 해제
javadoc Java 소스의 API 문서 생성
jshell Java 코드를 대화형으로 테스트
javap 컴파일된 클래스 파일의 구조 확인

2026년 Java 버전은 무엇을 설치할까?

2026년 8월 기준 Java SE의 최신 기능 릴리스는 JDK 26이고, 장기지원 버전은 JDK 25 LTS입니다.

버전 성격 추천 환경
JDK 26 최신 비 LTS 기능 릴리스 최신 기능 테스트·빠른 업데이트가 가능한 환경
JDK 25 최신 LTS 릴리스 새 프로젝트·장기간 운영·기업 개발환경
JDK 21 이전 LTS 릴리스 기존 프레임워크와 호환성이 필요한 환경
JDK 17·11·8 레거시 LTS 환경 구형 프로그램이 정확한 버전을 요구할 때

프로그램이 요구하는 Java 버전을 먼저 확인하세요.
UG NX, CATIA, 서버 프로그램, 전자결재와 구형 업무 프로그램은 최신 JDK가 아닌 Java 8·11·17처럼 특정 버전을 요구할 수 있습니다.

자바 환경변수 역할

환경변수 역할 권장 설정
JAVA_HOME Maven·Gradle·Tomcat·IDE 등이 사용할 JDK 최상위 폴더 지정 필요하면 설정
Path CMD와 PowerShell이 java·javac 실행 파일을 찾는 위치 %JAVA_HOME%\bin 추가
CLASSPATH Java 클래스와 JAR 검색 위치 전역 설정하지 않음

JAVA_HOME이 반드시 필요한 경우

  • Maven이 JDK 위치를 찾지 못합니다.
  • Gradle 또는 Jenkins 빌드가 JAVA_HOME을 요구합니다.
  • Tomcat·Spring·서버 프로그램 시작 스크립트가 JAVA_HOME을 확인합니다.
  • UG NX와 같은 프로그램이 Java VM 경로를 찾지 못합니다.
  • 여러 JDK 중 특정 버전을 명확하게 지정해야 합니다.

JAVA_HOME 없이도 java가 작동하는 이유

일부 JDK Windows 설치 프로그램은 다음 폴더를 Path에 등록해 `java`, `javac`와 `jshell` 명령을 실행할 수 있도록 합니다.

C:\Program Files\Common Files\Oracle\Java\javapath

이 때문에 JAVA_HOME이 비어 있어도 `java -version`은 작동할 수 있습니다.

그러나 Maven이나 업무 프로그램은 Path가 아닌 JAVA_HOME 값을 직접 읽을 수 있으므로 두 설정은 역할이 다릅니다.

JDK 설치경로 확인

환경변수를 입력하기 전에 실제 JDK 설치 폴더를 확인해야 합니다.

Oracle JDK 기본 설치경로

C:\Program Files\Java\jdk-25
C:\Program Files\Java\jdk-25.0.4
C:\Program Files\Java\jdk-26
C:\Program Files\Java\jdk-26.0.2

실제 폴더 이름은 설치한 버전과 배포판에 따라 다를 수 있습니다.

다른 JDK 배포판 경로 예시

C:\Program Files\Eclipse Adoptium\jdk-25...
C:\Program Files\Microsoft\jdk-21...
C:\Program Files\Amazon Corretto\jdk21...
C:\Java\jdk-25

환경변수에는 예시를 그대로 복사하지 말고 파일 탐색기에서 확인한 본인 PC의 실제 폴더를 입력합니다.

JDK 폴더가 맞는지 확인

선택한 폴더 안에 다음 하위 폴더와 파일이 있는지 확인합니다.

bin\java.exe
bin\javac.exe
bin\jar.exe
conf
include
jmods
lib

JAVA_HOME에 bin 폴더를 입력하지 마세요.
JAVA_HOME은 `C:\Program Files\Java\jdk-25`처럼 JDK 최상위 폴더를 가리키고, Path에 `%JAVA_HOME%\bin`을 추가해야 합니다.

윈도우11 JAVA_HOME 환경변수 설정

윈도우11 시스템 환경 변수 편집 검색윈도우11 고급 시스템 설정 환경 변수
윈도우11 시스템 환경 변수 편집 메뉴

시스템 환경 변수 편집 열기

  1. Windows 검색창에 환경 변수를 입력합니다.
  2. 시스템 환경 변수 편집을 선택합니다.
  3. 시스템 속성의 고급 탭이 열리는지 확인합니다.
  4. 아래쪽의 환경 변수를 누릅니다.

윈도우 시스템 속성 고급 환경 변수 버튼
시스템 속성의 고급 탭에서 환경 변수를 선택합니다

실행창으로 바로 열기

Win + R 실행창에 입력

sysdm.cpl

시스템 속성이 열리면 고급 → 환경 변수를 선택합니다.

윈도우11 사용자 변수 시스템 변수 JAVA_HOME 추가
환경 변수 창에서 사용자 변수 또는 시스템 변수를 선택합니다

JAVA_HOME 새 변수 만들기

  1. 현재 사용자만 사용한다면 위쪽 사용자 변수에서 새로 만들기를 누릅니다.
  2. PC의 모든 사용자와 서비스에 적용하려면 관리자 권한으로 아래쪽 시스템 변수에서 새로 만들기를 누릅니다.
  3. 변수 이름에 JAVA_HOME을 입력합니다.
  4. 변수 값에 실제 JDK 설치경로를 입력합니다.
  5. 확인을 누릅니다.

JAVA_HOME 변수 이름 JDK 설치경로 입력
JAVA_HOME에는 JDK 최상위 설치 폴더를 입력합니다

변수 이름

JAVA_HOME

변수 값 예시

C:\Program Files\Java\jdk-25

JAVA_HOME 설정 시 주의사항

  • 경로 끝에 `\bin`을 붙이지 않습니다.
  • 변수 값 앞뒤에 큰따옴표를 넣지 않습니다.
  • 실제로 존재하는 JDK 폴더를 선택합니다.
  • JRE 또는 `jre` 하위 폴더를 선택하지 않습니다.
  • 버전을 삭제하거나 업데이트했다면 경로를 다시 확인합니다.

공백이 있어도 큰따옴표를 넣지 않습니다.
`C:\Program Files\Java\jdk-25`처럼 Program Files에 공백이 있어도 환경변수 값 자체에는 따옴표를 입력하지 않습니다.

Path에 %JAVA_HOME%\bin 추가

윈도우11 시스템 변수 Path 환경 변수 편집
Path를 선택한 뒤 편집을 누릅니다

  1. 환경 변수 창에서 Path를 선택합니다.
  2. 편집을 누릅니다.
  3. 새로 만들기를 선택합니다.
  4. 아래 값을 입력합니다.

%JAVA_HOME%\bin

Path 환경변수 새로 만들기 JAVA_HOME bin 추가윈도우 Path에 JAVA_HOME bin 등록
Path 환경변수에 %JAVA_HOME%\bin 추가

  1. 같은 Java 경로가 중복 등록돼 있는지 확인합니다.
  2. 사용할 JDK를 우선하고 싶다면 `%JAVA_HOME%\bin`을 위쪽으로 이동합니다.
  3. 모든 확인 버튼을 눌러 창을 닫습니다.
  4. 기존 CMD와 PowerShell을 닫고 새 창을 엽니다.

JAVA_HOME bin Path 환경변수 순서 이동자바 Path 환경변수 설정 완료
Java 실행경로 중복과 Path 순서 확인

Path를 무조건 맨 위로 올려야 할까?

Path는 위에서 아래 순서로 같은 이름의 실행 파일을 검색합니다.

따라서 `%JAVA_HOME%\bin`보다 위쪽에 다른 Java 경로가 있으면 그쪽의 `java.exe`가 먼저 실행될 수 있습니다.

다만 업무 프로그램이 특정 Java 버전을 먼저 사용하도록 구성돼 있다면 무조건 순서를 바꾸지 말고 다음 명령으로 현재 사용 중인 경로를 확인하는 것이 좋습니다.

where java
where javac

CLASSPATH는 설정하지 않는 것이 권장

구형 Java CLASSPATH 전역 환경변수 설정 화면
과거에는 CLASSPATH를 전역 등록했지만 최신 프로젝트에서는 권장되지 않습니다

과거 Java 설정 글에서는 다음과 같은 CLASSPATH 값을 시스템 환경변수에 추가하는 경우가 많았습니다.

.;%JAVA_HOME%\lib

그러나 최신 Java 개발에서는 전역 CLASSPATH를 설정하면 프로젝트마다 사용하는 라이브러리가 섞이고, 다른 프로그램의 클래스 로딩에 영향을 줄 수 있습니다.

권장 방식

  • 직접 실행할 때 `java -cp` 또는 `javac -cp` 옵션을 사용합니다.
  • Maven의 `pom.xml`에서 의존성을 관리합니다.
  • Gradle의 `build.gradle` 또는 `build.gradle.kts`를 사용합니다.
  • Eclipse·IntelliJ 프로젝트별 Build Path를 사용합니다.
  • Java 모듈 시스템을 사용하는 경우 module-path를 지정합니다.

JAR 파일을 직접 추가하는 예시

javac -cp "lib\example.jar" Main.java
java -cp ".;lib\example.jar" Main

기존 CLASSPATH가 있다면 바로 삭제하기 전 확인하세요.
오래된 업무 프로그램이나 배치파일이 해당 환경변수에 의존할 수 있으므로 값을 기록한 뒤 임시로 제거해 정상 작동 여부를 비교합니다.

사용자 변수와 시스템 변수 차이

구분 적용 범위 추천 환경
사용자 변수 현재 Windows 계정 개인 개발 PC·관리자 권한이 없는 계정
시스템 변수 PC의 모든 사용자와 일부 서비스 공용 PC·빌드 서버·Tomcat·서비스 실행

개인 개발 PC라면 사용자 변수만으로 충분한 경우가 많습니다.

Jenkins, Tomcat과 Windows 서비스처럼 로그인 사용자와 다른 계정으로 실행되는 프로그램은 시스템 변수를 필요로 할 수 있습니다.

같은 이름의 변수가 사용자와 시스템에 모두 있으면 혼동될 수 있습니다.
JAVA_HOME이 두 곳에 서로 다른 값으로 등록돼 있다면 현재 계정과 서비스가 다른 JDK를 사용할 수 있으므로 한쪽으로 정리하세요.

명령어로 임시 JAVA_HOME 설정

환경변수 창을 수정하기 전에 현재 터미널에서만 임시로 JDK를 바꿔 테스트할 수 있습니다.

명령 프롬프트 CMD

set "JAVA_HOME=C:\Program Files\Java\jdk-25"
set "PATH=%JAVA_HOME%\bin;%PATH%"

java -version
javac -version

CMD 창을 닫으면 임시 설정은 사라집니다.

PowerShell

$env:JAVA_HOME = "C:\Program Files\Java\jdk-25"
$env:Path = "$env:JAVA_HOME\bin;$env:Path"

java -version
javac -version

PowerShell 창을 닫으면 기존 Windows 환경변수로 돌아갑니다.

임시 설정을 먼저 권장하는 이유
JAVA_HOME과 Path를 영구 변경하기 전 해당 JDK에서 프로그램이 정상적으로 실행되는지 안전하게 테스트할 수 있습니다.

PowerShell로 JAVA_HOME 영구 등록

아래 예제는 현재 Windows 사용자에게 JAVA_HOME과 Path를 영구 등록합니다. 실행 전 실제 JDK 경로로 변경합니다.

$javaHome = "C:\Program Files\Java\jdk-25"

if (-not (Test-Path "$javaHome\bin\javac.exe")) {
    throw "지정한 JDK 경로에서 javac.exe를 찾을 수 없습니다: $javaHome"
}

[Environment]::SetEnvironmentVariable(
    "JAVA_HOME",
    $javaHome,
    "User"
)

$javaPathEntry = "%JAVA_HOME%\bin"
$currentUserPath = [Environment]::GetEnvironmentVariable("Path", "User")

$pathItems = @(
    $currentUserPath -split ";" |
    Where-Object {
        $_ -and
        $_.Trim() -ne $javaPathEntry -and
        $_.Trim() -notmatch "\\Java\\jdk-[^\\]+\\bin\\?$"
    }
)

$newUserPath = ($javaPathEntry + ";" + ($pathItems -join ";")).TrimEnd(";")

[Environment]::SetEnvironmentVariable(
    "Path",
    $newUserPath,
    "User"
)

Write-Host "JAVA_HOME과 사용자 Path 설정이 완료됐습니다."
Write-Host "PowerShell과 CMD를 모두 닫고 새 창에서 확인하세요."

시스템 Path 전체를 setx로 덮어쓰지 마세요.
`setx PATH ...` 명령을 잘못 사용하면 기존 프로그램 경로가 확장·누락되거나 중복될 수 있습니다. GUI 또는 PowerShell의 환경변수 API를 사용하는 편이 안전합니다.

자바 환경변수 설정 확인

명령 프롬프트 java version 자바 설치버전 확인
새 명령 프롬프트에서 java와 javac 버전을 확인합니다

새 CMD 실행

환경변수는 프로그램이 시작될 때 상위 프로세스로부터 전달됩니다.

설정 전에 열어둔 CMD, PowerShell, Eclipse와 IntelliJ는 이전 값을 계속 사용할 수 있으므로 모두 닫고 다시 실행합니다.

JAVA_HOME 확인

echo %JAVA_HOME%

java 실행경로 확인

where java

javac 실행경로 확인

where javac

Java 런타임 버전 확인

java -version

Java 컴파일러 버전 확인

javac -version

javac version 자바 JDK 컴파일러 설치 확인
javac 버전이 표시돼야 JDK 컴파일러를 정상적으로 사용할 수 있습니다

실제 Java 설치 위치 확인

java -XshowSettings:properties -version 2>&1 | findstr "java.home"

결과에 표시되는 `java.home`이 JAVA_HOME과 같은 JDK 계열을 가리키는지 확인합니다.

PowerShell에서 전체 실행경로 확인

Get-Command java -All
Get-Command javac -All

java와 javac 버전이 다르면 설정 충돌입니다.
`java -version`은 Java 8인데 `javac -version`은 Java 25처럼 다르게 표시되면 Path에 여러 JDK 또는 JRE 경로가 섞여 있는지 확인하세요.

Java 컴파일 테스트

버전 명령만 확인하지 말고 작은 Java 파일을 직접 컴파일해보면 JDK 설정을 확실하게 검증할 수 있습니다.

Hello.java 파일 만들기

public class Hello {
    public static void main(String[] args) {
        System.out.println("Java 환경변수 설정 완료");
        System.out.println("Java Version: " + System.getProperty("java.version"));
        System.out.println("Java Home: " + System.getProperty("java.home"));
    }
}

컴파일

javac Hello.java

같은 폴더에 `Hello.class`가 만들어지면 컴파일러가 정상 작동한 것입니다.

실행

java Hello

파일명이 아닌 클래스 이름을 입력하므로 `java Hello.class`라고 실행하지 않습니다.

소스 파일 바로 실행

최신 JDK에서는 간단한 소스 파일을 별도 컴파일 명령 없이 실행할 수도 있습니다.

java Hello.java

다만 `javac` 환경까지 검증하려면 컴파일과 실행을 따로 진행하는 편이 좋습니다.

java 내부 또는 외부 명령 오류 해결

'java'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

주요 원인

  • JDK가 설치되지 않았습니다.
  • Path에 JDK의 bin 폴더가 없습니다.
  • JAVA_HOME 경로가 존재하지 않습니다.
  • 환경변수 설정 후 기존 CMD를 계속 사용하고 있습니다.
  • Path 값에 오타나 따옴표가 포함돼 있습니다.
  • JDK 폴더를 삭제했지만 환경변수만 남아 있습니다.

확인 순서

echo %JAVA_HOME%
dir "%JAVA_HOME%\bin\java.exe"
where java

두 번째 명령에서 파일을 찾지 못하면 JAVA_HOME 경로를 수정해야 합니다.

javac 명령어만 인식되지 않을 때

'javac'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

`java -version`은 작동하지만 `javac -version`만 실패하면 다음 가능성을 확인합니다.

  • JDK가 아닌 구형 JRE만 설치돼 있습니다.
  • Path가 Java 런타임 폴더만 가리킵니다.
  • JDK 설치가 불완전해 `bin\javac.exe`가 없습니다.
  • Oracle javapath에 java는 있지만 javac 링크가 손상됐습니다.
  • 다른 Java 배포판의 실행경로가 먼저 등록돼 있습니다.

JDK 컴파일러 파일 확인

dir "%JAVA_HOME%\bin\javac.exe"

파일이 없다면 올바른 JDK 패키지를 다시 설치합니다.

JAVA_HOME is not defined correctly 오류

Maven, Gradle과 Tomcat을 실행할 때 다음과 비슷한 오류가 나타날 수 있습니다.

JAVA_HOME is not defined correctly.
This environment variable is needed to run this program.

잘못된 설정 예시

JAVA_HOME=C:\Program Files\Java\jdk-25\bin
JAVA_HOME="C:\Program Files\Java\jdk-25"
JAVA_HOME=C:\Program Files\Java\삭제된-jdk

올바른 설정 예시

JAVA_HOME=C:\Program Files\Java\jdk-25

Maven 확인

mvn -version

Maven 출력의 Java version과 runtime이 원하는 JDK를 가리키는지 확인합니다.

Gradle 확인

gradle -version

Gradle Daemon이 이전 JDK를 계속 사용한다면 IDE와 터미널을 닫은 뒤 데몬을 중지합니다.

gradle --stop

자바 이전 버전이 계속 표시될 때

새 JDK를 설치했는데 `java -version`에서 이전 버전이 표시되면 대부분 Path 순서 문제입니다.

모든 Java 실행경로 확인

where java
where javac

결과가 여러 줄이라면 첫 번째 경로의 실행 파일이 사용됩니다.

충돌하기 쉬운 경로

C:\Program Files\Common Files\Oracle\Java\javapath
C:\Program Files\Java\jdk-8\bin
C:\Program Files\Java\jdk-17\bin
C:\Program Files\Java\jdk-25\bin
C:\Windows\System32

해결방법

  1. 사용자 변수와 시스템 변수의 Path를 모두 확인합니다.
  2. 존재하지 않는 Java 경로를 삭제합니다.
  3. 중복된 `%JAVA_HOME%\bin` 항목을 하나만 남깁니다.
  4. 의도적으로 사용할 Java 경로를 위쪽으로 이동합니다.
  5. 새 CMD에서 `where java`를 다시 확인합니다.

프로그램 폴더의 java.exe를 임의로 삭제하지 마세요.
일부 프로그램은 자체 포함된 Java Runtime을 사용합니다. 해당 파일을 삭제하면 프로그램만 실행되지 않을 수 있습니다.

여러 JDK 버전 전환방법

Java 8, 17, 21과 25처럼 여러 버전을 설치해 프로젝트별로 사용해야 할 수 있습니다.

현재 CMD에서만 JDK 17로 전환

set "JAVA_HOME=C:\Program Files\Java\jdk-17"
set "PATH=%JAVA_HOME%\bin;%PATH%"

java -version
javac -version

현재 PowerShell에서 JDK 25로 전환

$env:JAVA_HOME = "C:\Program Files\Java\jdk-25"
$env:Path = "$env:JAVA_HOME\bin;" + (($env:Path -split ";") |
    Where-Object { $_ -notmatch "\\Java\\jdk-[^\\]+\\bin\\?$" } |
    ForEach-Object { $_.Trim() } |
    Where-Object { $_ } |
    Select-Object -Unique) -join ";"

java -version
javac -version

프로젝트별 버전 관리

  • Maven Toolchains로 프로젝트별 JDK를 지정합니다.
  • Gradle Java Toolchains를 사용합니다.
  • IntelliJ Project SDK와 Gradle JVM을 별도로 지정합니다.
  • Eclipse Installed JREs와 Compiler Compliance Level을 설정합니다.
  • CI 서버는 작업별 JAVA_HOME을 지정합니다.

시스템 JAVA_HOME을 매번 바꾸는 것보다 빌드 도구의 Toolchain 기능을 사용하는 편이 여러 프로젝트 관리에 유리합니다.

Eclipse에서 Java 버전이 다를 때

Windows의 JAVA_HOME을 변경해도 Eclipse가 자동으로 같은 JDK를 사용하는 것은 아닙니다.

Eclipse JDK 확인경로

Window → Preferences → Java → Installed JREs

  1. Installed JREs 목록에서 사용할 JDK를 확인합니다.
  2. 없다면 Add를 눌러 JDK 홈 폴더를 추가합니다.
  3. 사용할 JDK를 체크합니다.
  4. 프로젝트 속성의 Java Build Path를 확인합니다.
  5. Java Compiler의 컴파일 레벨도 확인합니다.

IDE 오류가 모두 환경변수 문제는 아닙니다.
Eclipse와 IntelliJ는 자체 설정에 등록된 JDK를 사용할 수 있으므로 JAVA_HOME, Project SDK와 빌드 도구 JVM을 각각 확인해야 합니다.

IntelliJ IDEA JDK 설정

프로젝트 SDK

File → Project Structure → Project → SDK

Gradle JVM

Settings → Build, Execution, Deployment → Build Tools → Gradle → Gradle JVM

Project SDK는 JDK 25인데 Gradle JVM은 JDK 17로 지정돼 있으면 터미널과 IDE 빌드 결과가 다를 수 있습니다.

Android Studio는 시스템 Java와 다를 수 있음

Android Studio는 자체 포함된 JetBrains Runtime을 사용하며 Android Gradle Plugin 버전에 따라 지원 JDK가 정해집니다.

일반 Java 환경변수를 최신 JDK로 변경했다고 Android 프로젝트의 Gradle JDK까지 무조건 바꾸면 빌드 오류가 발생할 수 있습니다.

Android Studio Gradle JDK 확인

Settings → Build, Execution, Deployment → Build Tools → Gradle → Gradle JDK

환경변수를 설정했는데 반영되지 않을 때

증상 가능성이 높은 원인 해결방법
기존 CMD에서만 이전 값 실행 중 프로세스가 기존 환경변수 유지 CMD·PowerShell 완전 종료 후 재실행
java와 javac 버전이 다름 Path에 여러 Java 경로가 등록 where java·where javac 확인
Maven만 다른 JDK 사용 Maven 실행환경 또는 IDE 설정 mvn -version과 IDE Maven JDK 확인
서비스만 JAVA_HOME 인식 안 함 사용자 변수에만 등록 시스템 변수·서비스 계정 확인
Eclipse에서 컴파일 오류 IDE JDK·컴파일 레벨 불일치 Installed JREs와 Compiler 확인
JDK 업데이트 후 경로 없음 기존 패치 버전 폴더가 제거됨 실제 설치 폴더로 JAVA_HOME 수정
특정 프로그램만 실행 안 됨 프로그램이 자체 Java 경로나 특정 버전 요구 프로그램 공식 지원 Java 확인

자바 환경변수 삭제 및 초기화

잘못 등록한 JAVA_HOME과 Path를 정리하려면 삭제 전 기존 값을 메모하거나 화면을 캡처합니다.

정리할 항목

  • 존재하지 않는 JDK 설치경로
  • 중복된 `%JAVA_HOME%\bin`
  • 삭제한 구형 Java의 직접 경로
  • 필요하지 않은 전역 CLASSPATH
  • 사용자와 시스템 변수에 서로 다르게 등록된 JAVA_HOME

PowerShell로 사용자 JAVA_HOME 삭제

[Environment]::SetEnvironmentVariable(
    "JAVA_HOME",
    $null,
    "User"
)

Path의 `%JAVA_HOME%\bin`은 환경 변수 편집 화면에서 별도로 제거합니다.

Java 관련 Path를 모두 지우지 마세요.
Android Studio, 데이터베이스, CAD와 업무 프로그램이 자체 Java 실행경로를 사용하고 있을 수 있으므로 항목별 용도를 확인합니다.

자바 환경변수 최종 점검표

JAVA_HOME·Path 체크리스트
① JDK를 설치했는지 확인
② 실제 JDK 폴더에 bin\javac.exe가 있는지 확인
③ JAVA_HOME은 JDK 최상위 폴더로 지정
④ JAVA_HOME 값에 bin과 따옴표 제외
⑤ Path에는 %JAVA_HOME%\bin 추가
⑥ 전역 CLASSPATH는 가급적 설정하지 않음
⑦ 중복된 Java Path 제거
⑧ 기존 터미널과 IDE 종료 후 재실행
⑨ where java와 where javac 경로 비교
⑩ java -version과 javac -version 일치 확인

자바 환경변수 FAQ

JAVA_HOME에는 bin 폴더까지 입력하나요?

아닙니다. JAVA_HOME에는 `C:\Program Files\Java\jdk-25`처럼 JDK 최상위 폴더를 입력하고, Path에 `%JAVA_HOME%\bin`을 추가합니다.

JAVA_HOME 경로에 큰따옴표를 넣어야 하나요?

환경변수 값에는 큰따옴표를 넣지 않습니다. Program Files처럼 공백이 포함된 경로도 그대로 입력합니다.

CLASSPATH도 반드시 설정해야 하나요?

일반적인 최신 Java 개발에서는 설정하지 않는 것이 권장됩니다. 프로젝트의 라이브러리는 `-cp`, Maven, Gradle 또는 IDE 설정으로 관리하세요.

java -version만 나오면 JDK 설치가 완료된 건가요?

실행환경은 확인할 수 있지만 컴파일러까지 정상이라는 뜻은 아닙니다. `javac -version`과 `where javac`도 함께 확인해야 합니다.

javac만 찾을 수 없다고 나옵니다

JRE만 설치됐거나 Path가 런타임 폴더만 가리키는 상태일 수 있습니다. JDK의 `bin\javac.exe` 존재 여부와 `%JAVA_HOME%\bin`을 확인하세요.

환경변수 설정 후에도 이전 버전이 표시됩니다

기존 CMD를 닫고 새로 실행한 뒤 `where java`를 확인합니다. 여러 결과가 나오면 첫 번째 경로가 실제로 실행되는 Java입니다.

JAVA_HOME과 java.home은 같은 건가요?

JAVA_HOME은 사용자가 Windows에 등록하는 환경변수이고, `java.home`은 실행 중인 JVM이 자신의 실제 런타임 위치를 나타내는 Java 시스템 속성입니다.

사용자 변수와 시스템 변수 중 어디에 추가하나요?

현재 사용자만 Java를 사용한다면 사용자 변수로 충분합니다. Windows 서비스, 공용 PC와 여러 사용자에게 적용하려면 시스템 변수를 사용합니다.

JDK 26과 JDK 25 중 무엇을 설치해야 하나요?

최신 기능을 바로 사용할 환경이면 JDK 26을 선택할 수 있습니다. 장기간 안정적으로 운영할 새 프로젝트라면 최신 LTS인 JDK 25가 일반적으로 관리하기 편합니다.

Java 8 프로그램에 JDK 25를 사용해도 되나요?

프로그램마다 다릅니다. 오래된 프로그램은 Java 8 전용 API, 인증서, JVM 옵션과 32비트 환경을 요구할 수 있으므로 공식 지원 버전을 확인해야 합니다.

Eclipse에서만 컴파일 오류가 납니다

Windows 환경변수가 아니라 Eclipse의 Installed JREs, Java Build Path와 Compiler Compliance Level 문제일 수 있습니다.

Maven이 다른 Java 버전을 사용합니다

`mvn -version`에서 Java home을 확인하세요. IDE가 Maven을 실행할 때 별도의 JDK를 지정하거나 Maven Toolchains를 사용하는 경우가 있습니다.

JDK를 업데이트한 뒤 JAVA_HOME 오류가 발생합니다

기존 패치 버전 폴더가 제거되고 새 폴더가 만들어졌을 수 있습니다. `C:\Program Files\Java`에서 실제 폴더를 확인하고 JAVA_HOME을 수정하세요.

환경변수 없이 Java 프로그램을 실행할 수 있나요?

JDK의 전체 경로를 직접 입력하면 가능합니다. 또한 자체 Runtime을 포함해 배포된 프로그램은 시스템 JAVA_HOME이나 Path를 사용하지 않을 수도 있습니다.

자바 설치 및 오류 관련 글

윈도우11 자바 환경변수 설정의 핵심은 JAVA_HOME에 정확한 JDK 최상위 폴더를 지정하고 Path에 `%JAVA_HOME%\bin`을 추가하는 것입니다.

JAVA_HOME에는 `bin` 폴더나 큰따옴표를 넣지 말고, 파일 탐색기에서 확인한 실제 JDK 설치경로를 입력해야 합니다.

과거에 자주 사용하던 전역 CLASSPATH는 여러 프로젝트와 프로그램에 예기치 않은 영향을 줄 수 있으므로 일반적인 최신 Java 개발에서는 등록하지 않는 편이 좋습니다.

설정 후에는 기존 CMD와 IDE를 닫고 새로 실행한 뒤 `where java`, `where javac`, `java -version`과 `javac -version`을 순서대로 확인하세요.

새 버전을 설치했는데 이전 Java가 실행된다면 Path에 여러 Java 경로가 남아 있는지 확인하고, 첫 번째로 검색되는 실행 파일을 원하는 JDK로 정리해야 합니다.

Eclipse, IntelliJ, Android Studio, Maven과 Gradle은 Windows JAVA_HOME과 별도로 자체 JDK 설정을 사용할 수 있으므로 터미널은 정상인데 IDE에서만 오류가 발생한다면 프로젝트 SDK와 빌드 JVM도 함께 확인해야 합니다.

반응형
그리드형