HOWTO · Java

Java JAR 파일 생성 및 실행

Java 클래스를 컴파일하고, 실행 가능한 JAR로 패키징하고, java -jar로 실행하고, 명시적인 클래스 경로로 JAR에서 클래스를 시작하는 방법을 알아보세요.

이 페이지의 내용

Java JAR은 컴파일된 클래스와 관련 리소스를 하나의 아카이브로 패키징합니다. 실행 가능한 JAR을 만들고 실행하려면 main 메서드가 있는 클래스를 작성하고, javac로 컴파일한 뒤, Main-Class 항목과 함께 패키징하고, java -jar로 실행하세요.

실행 가능한 Java JAR 만들기 및 실행하기

이 소스 파일을 src/MyClass.java에 만드세요.

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

깨끗한 프로젝트 디렉터리에서 mkdir -p out으로 출력 디렉터리를 만든 다음, javac -d out src/MyClass.java로 클래스를 그 안에 컴파일하세요. 실행 가능한 아카이브는 jar cfe MyApplication.jar MyClass -C out .로 만듭니다. c 플래그는 아카이브를 만들고, f는 아카이브 파일 이름을 지정하며, e는 진입점 클래스를 설정합니다. 이 명령은 매니페스트에 Main-Class: MyClass를 기록하고 out의 컴파일된 파일을 추가합니다.

해당 디렉터리에서 java -jar MyApplication.jar로 실행하세요. println 호출은 프로그램이 실행될 때 그 인수를 표준 출력에 씁니다.

예상 출력:

Hello, World!

실행 가능한 매니페스트 없이 JAR 실행하기

클래스를 직접 시작한다면 JAR에 Main-Class 항목이 필요하지 않습니다. 진입점 없이 동일한 컴파일 결과를 jar cf MyApplication.jar -C out .로 패키징한 다음, 실행할 때 아카이브와 클래스 이름을 모두 지정하세요: java -cp MyApplication.jar MyClass.

여기서 -cp는 클래스 경로를 설정하고, MyClass는 Java가 호출해야 할 main 메서드를 가진 클래스를 지정합니다. 이는 아카이브가 라이브러리이거나 실행 시점에 진입점을 선택하려는 경우에 유용합니다. java -jar와는 다릅니다. 그 옵션은 아카이브의 매니페스트에 기록된 메인 클래스를 사용하며 별도로 제공된 클래스 이름은 사용하지 않습니다.

JAR 검증 및 일반적인 질문 처리

아카이브 내용을 나열하려면 jar tf MyApplication.jar을 사용하세요. 실행 가능한 JAR에는 MyClass.class와 META-INF/MANIFEST.MF의 매니페스트가 포함되어야 합니다. 아카이브 유틸리티로 그 매니페스트를 검사하여 정확한 항목 Main-Class: MyClass가 포함되어 있는지 확인하세요. 클래스 경로 기반 JAR의 경우 매니페스트에 메인 클래스를 명시할 필요는 없지만, -cp로 지정하는 클래스가 아카이브나 다른 클래스 경로 위치에 존재해야 합니다.

JAR은 Java 클래스 파일, 리소스, 메타데이터를 위한 ZIP 기반 아카이브입니다. java -jar는 매니페스트에 명명된 클래스를 시작하고, java -cp는 클래스를 직접 지정할 수 있게 합니다. JAR을 두 번 클릭하는 것은 Java 런타임과 적절한 파일 연결이 구성된 데스크톱 시스템에서만 작동할 수 있습니다. 터미널에서 실행하면 선택한 명령과 모든 진단 메시지가 표시됩니다.