Java 프로그램 컴파일 방법: 초보자를 위한 javac, PATH 설정 및 일반 오류 가이드

Java를 배우기 시작할 때 마주치는 첫 번째 벽은 “컴파일”입니다. 소스 코드(.java)를 작성하는 것만으로는 아무것도 실행되지 않습니다 — javac 명령어를 사용하여 컴파일하여 .class 파일을 생성해야 하며, 그제야 프로그램이 실행될 수 있습니다. 이 기사에서는 Java 컴파일 절차, javac의 기본 사용법, PATH 설정, 그리고 초보자가 자주 하는 오류의 해결 방법을 요약합니다 — 완전한 초보자도 단계별로 따라할 수 있는 흐름으로요. 목표는 “Java 컴파일은 어디서부터 시작해야 할까?”에서 망설임 없이 명령어를 입력할 수 있는 자신감으로 나아가는 것입니다.

Java 컴파일이란 무엇인가?|초보자를 위한 “컴파일” 설명

Java에서 “컴파일”은 인간이 작성한 소스 코드(.java)를 Java 가상 머신(JVM)이 읽을 수 있는 형식으로 변환하는 과정입니다.
결과물은 .class 파일로, 바이트코드(bytecode)라고 불립니다.

C와 같은 언어는 네이티브 코드로 직접 컴파일되는 반면, Java는 중간 단계를 거칩니다 — 소스 코드를 먼저 바이트코드로 변환한 후 JVM에서 실행됩니다.
이 메커니즘 덕분에 동일한 .class 파일을 서로 다른 OS 환경에서 실행할 수 있습니다 — 즉, Windows, macOS, 또는 Linux에서 정확히 동일한 Java 프로그램을 실행할 수 있습니다.

또 다른 중요한 요소를 이해해야 합니다: 컴파일과 실행은 별개의 작업입니다.

  • “javac” → 컴파일 담당
  • “java” → 실행 담당

대부분의 초보자는 이 구분이 모호해서 실패합니다. 이 “두 가지 다른 역할”을 명확히 하는 것이 이해의 가장 효율적인 첫걸음이 됩니다.

Java 컴파일 전에 필요한 준비

Java를 컴파일하려면 JDK(Java Development Kit)를 설치해야 합니다.
JRE만으로는 코드를 컴파일할 수 없습니다. 왜냐하면 컴파일러 도구 javac는 JDK에만 포함되어 있기 때문입니다.

먼저 다음을 확인해 보세요:

javac -version

이 명령어가 버전 번호를 반환하면 준비가 된 것입니다.
“command not found”나 유사한 오류가 발생하면 다음 중 하나일 가능성이 큽니다:

  • JDK가 설치되지 않음
  • JDK는 설치되었지만 PATH가 설정되지 않음
  • JRE만 설치됨 (개발 키트 없음)

PATH 설정은 특히 일본 사용자들이 자주 막히는 부분입니다.
운영 체제가 javac.exe(또는 /bin 디렉토리)까지의 경로를 인식하지 못하면 컴파일이 작동하지 않습니다.

결론:
“JDK 준비”와 “PATH 확인” — 이 두 가지가 갖춰져야만 Java 컴파일의 실제 출발선에 설 수 있습니다.

실제로 Java 파일 컴파일해 보자

여기서는 샘플 코드를 만들고 javac로 컴파일하는 절차를 확인하겠습니다.
먼저 다음 내용을 텍스트 에디터로 저장하세요.

Sample.java

public class Sample {
    public static void main(String[] args) {
        System.out.println("Hello Java!");
    }
}

파일 이름은 반드시 Sample.java여야 하며, public 클래스 이름은 파일 이름과 일치해야 합니다.
이 규칙을 어기면 컴파일이 실패합니다 — 이는 초보자가 가장 자주 하는 실수 중 하나입니다.

다음으로, 터미널 / 명령 프롬프트에서 다음을 실행하세요:

javac Sample.java

모든 것이 정상적으로 실행되면 Sample.class가 같은 폴더에 생성됩니다.
이는 “컴파일 완료”를 의미합니다.

따라서 이 순간:

  • Sample.java (소스)
  • Sample.class (바이트코드)

이 쌍이 이제 준비되었습니다.
이 단계에서 “Java 프로그램 실행”에 대비할 수 있습니다.

컴파일 후 실행 방법

컴파일이 완료되면 다음 단계는 .class 파일을 실행하는 것입니다.
여기서 사용하는 명령어는 java입니다 — javac가 아닙니다.

java Sample

주요 포인트: .class 확장자를 작성하지 마세요.
java Sample.class를 작성하면 오류가 발생합니다.
Java는 확장자 없이 클래스 이름을 기반으로 실행되도록 설계되었습니다.

정리된 요약:

RoleCommandTarget
Compilejavac Sample.java.java file
Runjava SampleClass name (without extension)

javacjava의 역할 전환을 이해했다면 초보자 단계를 통과한 것입니다.

If “Hello Java!”가 성공적으로 표시되면, 프로세스가 정상적으로 동작한 것입니다.
이 시점에서 여러분은 Java의 최소 “흐름”을 파악한 것입니다.

자주 발생하는 오류와 해결 방법

Java 컴파일 시, 초반에 오류가 발생하는 것은 전혀 이상한 일이 아닙니다.
여기서는 특히 일본 초보자들이 흔히 겪는 실수에만 초점을 맞춥니다.

1) javac: command not found / 'javac' is not recognized…

거의 100%의 경우, 원인은 다음 중 하나입니다:

  • JDK가 설치되지 않음
  • PATH가 설정되지 않음

해결 방법:
javac -version을 실행해 확인합니다
→ 아무 것도 표시되지 않으면 JDK를 재설치하고 PATH 설정을 다시 검토합니다.

2) 컴파일은 성공했지만 .class 파일이 생성되지 않음

일본 초보자들 사이에서 가장 흔한 문제는 다음과 같습니다:

파일 이름과 public 클래스 이름이 일치하지 않음

예시 — Sample.java에 다음과 같은 내용이 들어 있다면:

public class Test {
}

→ 컴파일 오류가 발생합니다.

3) 문자 인코딩 관련 경고

warning: [options] bootstrap class path not set in conjunction with -source 1.7

이와 같은 경고는 대부분 치명적이지 않습니다.
하지만 오래된 버전 설정이거나 인코딩이 맞지 않음을 암시할 수 있습니다.
파일을 UTF-8로 저장하는 것이 가장 안전한 선택입니다.

IDE를 이용한 컴파일

실제 Java 개발에서는 매번 터미널에 javac를 직접 입력하는 경우는 거의 없습니다.
그 이유는 IDE(통합 개발 환경)가 백그라운드에서 자동으로 컴파일을 처리해 주기 때문입니다.

다음 세 가지 IDE가 일본에서 매우 인기가 높으며, 학습용으로도 실용적입니다:

IDECharacteristics
IntelliJ IDEAThe de-facto standard for modern Java development. Suitable for professional use.
EclipseLong history, widely used in enterprise projects.
VSCodeLightweight. Java Extension Pack enables a proper Java environment.

IDE에서는 파일을 저장할 때마다 자동으로 컴파일이 이루어지고, 오류 위치가 즉시 시각화됩니다.
즉, “javac를 잘못 입력함”이나 “PATH 설정이 잘못됨” 같은 초보자 장애물을 우회할 수 있다는 뜻입니다.

그럼에도 불구하고 Java가 어떻게 동작하는지 이해하기 위해 최소 한 번은 직접 javac를 경험해 보는 것이 큰 가치가 있습니다.
손으로 “컴파일 → 실행” 흐름을 직접 이해하면, IDE 기반 개발로 전환했을 때 이해 속도가 크게됩니다.

javac 옵션 기본

javac는 단순히 “.java → .class 변환기”가 아닙니다. 컴파일 동작을 제어하기 위해 여러 옵션을 붙일 수 있습니다.
하지만 초보 단계에서는 모든 옵션을 외울 필요는 없습니다 — 흔히 쓰이는 몇 가지만 알면 충분합니다.

다음은 대표적인 세 가지 옵션입니다:

OptionMeaningExample
-dSpecify output directory for .class filesjavac -d out Sample.java
-classpathSpecify classpath for external libraries / other directoriesjavac -classpath lib/* Sample.java
--enable-previewEnable preview language featuresjavac --enable-preview Sample.java

특히 -d 옵션은 패키지를 사용할 때 거의 필수입니다.
예를 들어 package com.example;이라고 작성했다면, javac -d를 사용해 출력 디렉터리 아래에 올바른 디렉터리 구조가 생성되도록 해야 합니다.

실제 업무에 들어가면 classpath 지정과 -d 사용이 급격히 늘어납니다.
이 단계에서 이 옵션들의 이름만이라도 알고 있으면, 나중에 학습이 훨씬 수월해집니다.

요약

Java 프로그램을 실행하려면 3단계 순서를 이해해야 합니다: 소스 작성 → 컴파일 → 실행.
특히 javac(컴파일)와 java(실행)의 역할을 명확히 구분하면, “왜 컴파일이 필요한가”라는 이유가 순식간에 명확해집니다.

또한 초보자들이 흔히 막히는 두 가지 포인트는 다음과 같습니다:

  • JDK가 설치되지 않음 / PATH가 설정되지 않음
  • 파일 이름과 public 클래스 이름이 일치하지 않음

이 두 가지만 해결하면 학습 단계에서 큰 우회로를 피할 수 있습니다.
기본에 익숙해진 뒤 IDE 개발로 넘어가는 것은 전혀 문제되지 않습니다.
다만 “내부 메커니즘을 이해했는가”가 나중에 이해 속도 차이를 만들게 됩니다.

이 글을 출발점으로 삼아 먼저 .java → .class를 한 번 성공적으로 수행해 보세요.
그것이 Java 학습에서 첫 번째 성취 이정표가 될 것입니다.

FAQ: Java 컴파일에 대한 자주 묻는 질문

Q1: javacjava의 차이는 무엇인가요?
A: javac는 컴파일 명령으로, .java 파일을 .class 파일로 변환합니다.
 반면 java는 실행 명령으로, JVM 위에서 .class 파일을 실행합니다.

Q2: Sample.class가 생성되지 않습니다. 원인은 무엇인가요?
A: 가장 흔한 원인은 파일 이름과 public class 이름이 일치하지 않는 경우입니다.
 클래스가 public class Sample이라면 파일 이름은 Sample.java여야 합니다.

Q3: IDE를 사용하고 있다면 더 이상 javac를 배울 필요가 없나요?
A: IDE는 백그라운드에서 자동으로 컴파일하지만, 그 메커니즘을 이해하지 못하면 실제로 무슨 일이 일어나는지 파악하기 어려워집니다.
 한 번 기본 흐름을 경험하면 IDE 동작을 더 빠르게 이해할 수 있습니다.

Q4: 어떤 JDK를 설치해야 하나요?
A: 초보자에게는 Temurin(Eclipse Adoptium) LTS 빌드가 사용하기 쉽습니다.
 특별한 이유가 없다면 Java 17 또는 21을 선택하세요.

Q5: javac: command not found 오류가 발생합니다
A: JDK가 설치되지 않았거나 PATH가 설정되지 않은 경우입니다.
 먼저 javac -version을 실행해 인식되는지 확인하세요.