실행 가능한 JAR 파일을 만드는 방법은 무엇입니까?


82

두 개의 간단한 Java Swing 파일로 구성된 프로그램이 있습니다.

내 프로그램에 대한 실행 가능한 JAR 파일을 어떻게 만듭니 까?


뭘 물어 보는 거냐? jar를 실행하는 방법 또는 jar (run.cmd와 같은 하나의 명령)에서 실행 파일을 만드는 방법은 무엇입니까?
AlikElzin-kilaka 2015 년

답변:


83

jar 파일은 단순히 Java 파일 모음을 포함하는 파일입니다. jar 파일을 실행 가능하게 만들려면 jar 파일에서 main클래스가있는 위치를 지정해야 합니다. 예제 코드는 다음과 같습니다.

public class JarExample {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // your logic here
            }
        });
    }
}

클래스를 컴파일하십시오. 항아리를 만들려면 매니페스트 파일 ( MANIFEST.MF)도 만들어야합니다 . 예를 들면

Manifest-Version: 1.0
Main-Class: JarExample

컴파일 된 출력 클래스 파일 (JarExample.class, JarExample $ 1.class)과 매니페스트 파일을 동일한 폴더에 배치합니다. 명령 프롬프트에서 파일이있는 폴더로 이동하고 jar 명령을 사용하여 jar를 만듭니다. 예 (매니페스트 파일의 이름을 jexample.mf로 지정하는 경우)

jar cfm jarexample.jar jexample.mf *.class

실행 가능한 jarexample.jar이 생성됩니다.


34
내 2 센트 : 매니페스트 파일을 만들 필요는 없습니다. 를 들어 항아리 당신이 플래그를 지정하면 유틸리티, 전자를 대신 m , 당신은 오히려 매니페스트 파일보다 응용 프로그램의 (기본 클래스입니다)의 엔트리 포인트를 지정해야합니다. 예 :jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave

1
MANIFEST.MF 파일을 만드는 경우 마지막 줄을 줄 바꿈으로 끝내는 것을 잊지 마십시오. Windows에서는 끝에 빈 줄을 추가하십시오. 그렇지 않으면 마지막 속성이 jar 파일에 포함되지 않습니다. 이 특별한 경우에는 Main-Class 속성이 누락됩니다.
David

35

Eclipse 에서는 다음과 같이 간단하게 수행 할 수 있습니다.

Java 프로젝트를 마우스 오른쪽 단추로 클릭하고 내보내기를 선택하십시오 .

Java-> 실행 가능한 JAR 파일 -> 다음을 선택하십시오 .

시작 구성을 선택하고 프로젝트 파일을 기본 클래스 로 선택하십시오.

저장하려는 대상 폴더를 선택하고 마침을 클릭합니다.


구성 시작 : <MainClasssName>-<ProjectName>
corlaez

15

다음은 한 줄입니다.

jar cvfe myjar.jar package.MainClass *.class

어디는 MainClass당신과 함께 클래스입니다 main방법, 그리고 package이다 MainClass의 패키지로 제공된다.

이 작업을 수행하기 전에 .java파일을 .class파일 로 컴파일해야 합니다 .

c  create new archive
v  generate verbose output on standard output
f  specify archive file name
e  specify application entry point for stand-alone application bundled into an executable jar file

이 답변은 다른 답변에 대한 Powerslave의 의견에서 영감을 얻었습니다.


오류가 발생합니다.Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
Anton Stafeyev

되어 testClass당신의 일에 정의 된 .class파일? .java이 명령을 실행하기 전에 소스 ( ) 파일 을 컴파일했는지 확인하십시오 . 또한 일반적으로 클래스는 UpperCamelCase 여야하며 TestClass대신 이름을 바꿀 수 있습니다 .

4

maven을 사용하는 경우 pom.xml 파일에 다음을 추가 하십시오.

<plugin>
    <!-- Build an executable JAR -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

그런 다음 mvn package. jar 파일은 대상 디렉토리 아래에 있습니다 .


위보다 변형.
Vishwa Ratna

0

이 질문에 답하기에는 너무 늦었습니다. 그러나 누군가가 지금이 답변을 찾고 있다면 오류없이 실행되도록 만들었습니다.

먼저 maven을 다운로드 하여 경로에 추가하십시오 . [ mvn --version]는 경로에 올바르게 추가 한 경우 버전 사양을 제공합니다.

이제 maven 프로젝트 [ pom.xml] 에 다음 코드를 추가합니다. 다음 코드에서 [ com.example.test.Test ]에 대한 기본 파일 진입 점으로 바꿉니다 .

      <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>
            your_package_to_class_that_contains_main_file .MainFileName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

이제 CMD프로젝트 의 명령 줄 [ ] 로 이동하여 입력 mvn package하면 디렉토리 ProjectName-0.0.1-SNAPSHOT.jar아래에 jar 파일이 생성됩니다 target.

이제으로 대상 디렉토리 로 이동하십시오 cd target.

마지막으로 입력 java -jar jar-file-name.jar하고 예를 입력 하면 프로그램에 오류가 없으면 성공적으로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.