본문으로 건너뛰기
안동민 개발노트 아이콘

안동민 개발노트

본문 시작
1장 : Java 소개와 개발 환경

JDK 25 설치와 환경 확인

Java 코드는 같은데 내 컴퓨터에서만 컴파일되지 않는 문제는 대부분 JDK 선택과 경로 설정에서 시작됩니다.

이 교재의 기준은 장기 지원 릴리스인 JDK 25입니다.

설치 프로그램을 끝냈다는 사실보다 터미널이 어떤 javajavac를 찾는지 확인하는 일이 중요합니다.

IDE가 별도 JDK를 가리키면 터미널과 결과가 달라질 수도 있습니다.

여기서는 설치 자체보다 재현 가능한 환경 확인 절차에 집중합니다.


배포판보다 버전과 경로를 기록한다

OpenJDK 계열 배포판은 여러 가지지만 표준 API를 배우는 단계에서는 JDK 25인지가 먼저입니다.

팀에서는 배포판, 정확한 버전, 설치 경로를 함께 기록해야 같은 빌드를 재현할 수 있습니다.


javajavac를 한 쌍으로 확인한다

java --version은 실행기를, javac --version은 컴파일러를 확인합니다.

둘의 주 버전이 다르면 PATH 앞쪽에 남은 이전 설치를 의심해야 합니다.

진단 프로그램은 현재 터미널이 실제로 어떤 Java를 실행했는지 보여 줍니다. 설치 화면에 적힌 버전보다 이 출력이 중요한 이유는 PATH 앞쪽에 남아 있는 예전 JDK가 선택될 수 있기 때문입니다.

JdkProbe.java
public class JdkProbe {
    public static void main(String[] args) {
        System.out.println("java.version=" + System.getProperty("java.version"));
        System.out.println("java.home=" + System.getProperty("java.home"));
        System.out.println("compiler=" + javax.tools.ToolProvider.getSystemJavaCompiler());

        // JRE만 선택했다면 compiler가 null일 수 있다.
    }
}

java.versionjava.home을 함께 보면 버전 번호와 설치 경로가 한 쌍으로 맞는지 확인할 수 있습니다. javac -version만 25이거나 java -version만 25라면 컴파일과 실행이 서로 다른 JDK를 바라보는 상태입니다.

java.version=<JDK 25 update version>
java.home=<선택된 JDK 경로>
compiler=<JavacTool instance>

객체 주소 부분은 매번 달라집니다. compiler가 null이면 실행 환경과 개발 JDK가 분리됐는지 확인합니다.


JAVA_HOME은 도구가 찾는 기준점이다

일부 빌드 도구와 IDE는 PATH 대신 JAVA_HOME을 사용합니다.

이 값은 실행 파일이 든 bin 폴더가 아니라 JDK 루트 디렉터리를 가리켜야 합니다.

JAVA_HOME은 JDK 디렉터리 자체를 가리키고, 실행 파일은 그 아래 bin에 있습니다. 따라서 Windows의 PATH에는 %JAVA_HOME%\bin을 넣고 macOS·Linux에서는 $JAVA_HOME/bin을 넣어야 합니다.

java --version
javac --version

// 두 명령의 주 버전이 다르면 PATH에서 실제 경로를 확인한다.
// Windows:  Get-Command java; Get-Command javac
// macOS/Linux: which java; which javac

버전 오류를 메시지에서 역추적한다

UnsupportedClassVersionError는 대개 더 새 JDK로 만든 클래스를 오래된 JVM에서 실행할 때 발생합니다.

설치를 반복하기 전에 컴파일 JDK와 실행 JDK를 각각 확인하는 편이 빠릅니다.

버전 불일치가 보이면 재설치부터 하지 말고 where java 또는 which -a java로 후보 경로를 모두 확인합니다. 셸을 다시 연 뒤 java, javac, JAVA_HOME 세 값이 같은 JDK 25를 가리키면 환경 확인이 끝난 것입니다.


환경 문제는 설치 여부가 아니라 실제로 선택된 실행 파일과 버전의 조합으로 진단해야 합니다.