자체 실행 JAR에서 주요 매니페스트 속성의 중요성

1. 개요

모든 실행 가능한 Java 클래스는 기본 메소드 를 포함해야합니다 . 간단히 말해이 방법은 응용 프로그램의 시작점입니다.

자체 실행 JAR 파일에서 기본 메서드를 실행하려면 적절한 매니페스트 파일을 만들고 코드와 함께 압축해야합니다. 이 매니페스트 파일에는 메인 메서드를 포함하는 클래스의 경로를 정의하는 메인 매니페스트 속성이 있어야합니다.

이 튜토리얼에서는 간단한 Java 클래스를 자체 실행 JAR로 패킹하는 방법을 보여주고 성공적인 실행을위한 주요 매니페스트 속성의 중요성을 보여줍니다 .

2. 주요 매니페스트 속성없이 JAR 실행

좀 더 실용적으로하기 위해 적절한 매니페스트 속성없이 실패한 실행의 예를 보여 드리겠습니다.

main 메소드로 간단한 Java 클래스를 작성해 보겠습니다.

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

예제 클래스를 JAR 아카이브에 압축하려면 운영 체제의 셸로 이동하여 컴파일해야합니다.

javac -d . AppExample.java 

그런 다음 JAR로 압축 할 수 있습니다.

jar cvf example.jar com/baeldung/manifest/AppExample.class 

우리 example.jar는 기본 매니페스트 파일이 포함됩니다. 이제 JAR 실행을 시도 할 수 있습니다.

java -jar example.jar 

다음 오류와 함께 실행이 실패합니다.

no main manifest attribute, in example.jar 

3. 주요 매니페스트 속성으로 JAR 실행

우리가 보았 듯이 JVM은 주요 매니페스트 속성을 찾을 수 없습니다. 그 때문에 main 메소드가 포함 된 메인 클래스를 찾을 수 없습니다.

코드와 함께 적절한 매니페스트 속성을 JAR에 포함합시다. 한 줄을 포함하는 MANIFEST.MF 파일 을 만들어야합니다 .

Main-Class: com.baeldung.manifest.AppExample 

이제 매니페스트에 컴파일 된 AppExample.class 의 클래스 경로가 포함 됩니다.

이미 예제 클래스를 컴파일했기 때문에 다시 할 필요가 없습니다.

매니페스트 파일과 함께 압축합니다.

jar cvmf MANIFEST.MF example.jar com/baeldung/manifest/AppExample.class 

이번에는 JAR이 예상대로 실행되고 다음을 출력합니다.

AppExample executed!

4. 결론

이 빠른 기사에서는 간단한 Java 클래스를 자체 실행 JAR로 압축하는 방법을 보여 주며 두 가지 간단한 예제에서 주요 매니페스트 속성의 중요성을 보여주었습니다.

예제의 전체 소스 코드는 GitHub에서 사용할 수 있습니다. 이것은 Maven 기반 프로젝트이므로 그대로 가져 와서 사용할 수 있습니다.