JAR 패키지 구현
JAR 패키지는 JAR 지시문을 사용하여 포장 할 수 있습니다. 명령 줄에 JAR을 입력하면 JAR 지시문의 내용을 볼 수 있습니다.
마지막 쇼에 나와있는 두 가지 예에서 두 가지 방법으로 포장하는 두 가지 방법이 있습니다. 둘의 차이점은 정의한 매니페스트 매니페스트 파일을 사용하는지 여부입니다. 첫 번째 예제는 Manifest 파일을 사용하여 패키지되지 않으므로 최종 생성 된 JAR 패키지의 Manifest 파일은 기본 파일입니다. 이 방법은 비교적 간단한 JAR 패키지 구조에 적합하며 다른 JAR 패키지 의존성이 없으며 생성 된 JAR 패키지를 실행할 필요가 없습니다. 이러한 방식으로 생성 된 JAR 패키지는 프로그램 항목이 매니페스트 파일에 지정되지 않기 때문에 java -jar XXX.jar 명령을 사용하여 실행할 수 없습니다. 두 번째 인스턴스는 비교적 일반적인 포장 방법입니다. 즉, 포장에 참여하기 위해 사용자 정의 매니페스트 파일을 사용하여 패키지에 종속성을 추가하고 java -jar XXX.jar 구현하여 JAR 패키지를 직접 실행할 수 있도록 프로그램 항목을 지정할 수 있습니다.
첫 번째 간단한 포장 방법
가장 쉬운 것은 현재 폴더에서 컴파일 된 클래스 바이트 코드 파일을 패키지하고 출력하는 것입니다. 예는 다음과 같습니다.
3 개의 Java 파일, test1.java test2.java 및 main.java를 작성하십시오
public class test1 {public static void main (String [] args) {} public void display () {System.out.println ( "this is class test1"); }}및 test2.java 파일
public class test2 {public static void main (String [] args) {} public void display () {System.out.println ( "this is class test2"); }}Main.java
public class main {public static void main (String [] args) {for (string a : args) {System.out.println ( "gived parameter"+a); } test1 t1 = new test1 (); t1.display (); test2 t2 = new test2 (); t2.display (); }} 이 세 가지 파일을 명령 줄에서 컴파일하고 Javac 명령을 사용하여 컴파일하십시오.
Jar Directive를 사용하여 컴파일 된 클래스 파일을 포장하십시오.
추가 된 목록은 포장 중에 표시됩니다. 감압 도구를 사용하여 생성 된 test.jar 열면 다음 구조를 볼 수 있습니다.
3 개의 클래스 파일 외에도 Manifest.mf (목록 파일)가 포함 된 추가 메타 INF 폴더가 있습니다. 이 파일의 역할은 나중에 설명했듯이 매우 중요합니다. 먼저 내용을 살펴 보겠습니다
매우 간단한 매니페스트에는 매니페스트 버전과 Java 버전 만 포함되어 있습니다.
현재 java -jar test.jar 의 실행은 다음과 같은 영향을 미칩니다.
기본 목록 속성 오류 가보고되지 않았습니다. 기본 매니페스트를 사용하여 항아리를 생성하는 첫 번째 방법을 사용하기 때문입니다. 기본 매니페스트는 프로그램 항목을 지정하지 않으므로 오류가 발생합니다.
JAR 패키지에서 매니페스트 파일을 직접 변경하고 (감압 도구를 열고 변경 한 후 저장) 다음 효과로 변경할 수 있습니다.
java -jar test.jar 다시 실행 한 후 프로그램은 올바른 컨텐츠를 입력합니다.
메인 클래스 속성은 매니페스트 파일에 추가되고 프로그램 항목을 지정하여 JAR 파일의 직접 실행을 실현합니다.
따라서 기본 매니페스트를 사용하면 JAR 파일을 직접 실행할 수 없습니다. 정의하는 매니페스트 파일을 사용하여 패키지를 사용하거나 패키지의 매니페스트 파일을 변경하십시오.
포장하는 두 번째 방법
두 번째 포장 방법은 더 일반적입니다. 일반적으로 Java 파일의 첫 번째 줄은 package XXX; 즉, 패키지 이름은 컴파일 된 클래스 파일의 경로를 결정합니다. 컴파일 및 포장 할 여러 개의 Java 파일이 있고 패키지 이름이 다른 경우 첫 번째 방법에 따라 포장 할 때 파일을 작성하는 것이 매우 비현실적이므로 두 번째 방법이 있습니다. 클래스 파일에 존재하는 모든 디렉토리를 패키지로 만들고 루트 폴더 (예 : FOO)에 의존성 JAR 패키지를 넣은 다음 프로그램 입구 및 기타 종속성 JAR 패키지를 지정하기 위해 매니페스트 매니페스트 파일을 작성하십시오. 명령을 실행할 때 :
위의 명령 에는 foo/ 폴더 뒤에 공간과 점이 있습니다.
아래 예를 봅시다
test1.java, test2.java 및 main.java도 마찬가지이지만 각각 자체 패키지 이름이 있습니다.
패키지 cn.mytest1; public class test1 {public static void main (String [] args) {} public void display () {System.out.println ( "this is class test1"); }} 패키지 cn.mytest2; public class test2 {public static void main (String [] args) {} public void display () {System.out.println ( "this is class test2"); }} 패키지 cn.mymain; import cn.mytest1.test1; import cn.mytest2.test2; public class main {public static void main (string [] args) {for (String item : args) {System.out.println ( "Passing Parameter"+item); } test1 t1 = new test1 (); test2 t2 = new test2 (); t1.display (); t2.display (); }} 또한 Javac Directive를 사용하여 컴파일 된 3 개의 클래스 파일은 패키지 이름이 다르기 때문에 다른 경로에 존재합니다. 클래스 파일이 포함 된 모든 컴파일 된 폴더를 Foo 폴더에 넣습니다.
그런 다음 foo 외부에 매니페스트 파일을 작성하십시오.
Manifest의 내용은 다음과 같습니다.
참고 : 매니페스트 파일의 마지막 줄은 빈 줄입니다.
명령 줄에서 명령을 실행하십시오 : jar cvfm test.jar MANIFEST.MF -C foo/ .
JAR 패키지를 명령 줄에서 직접 실행할 수 있는지 테스트하고 명령 java -jar test.jar 사용하십시오.
올바르게 포장하고 항아리를 성공적으로 실행하십시오.
매니페스트 파일 소개
위의 두 가지 예를 통해 JAR 포장에는 매니페스트 파일이 필요하다는 것을 알 수 있습니다. 매니페스트 파일은 포장 된 JAR 파일의 자세한 정보를 설명하며 패키지 메타 폴더에 존재합니다. 간단한 매니페스트 파일의 주요 내용은 다음과 같습니다.
가장 중요한 것은 JAR 패키지를 만들 때 Manifest-Version Main-Class 클래스 경로 의 세 가지 속성이 매우 중요하다는 것입니다. Manifest-Version은 버전 번호입니다. 그에 따라 작성하십시오. Main-Class는 JAR 패키지의 입력 프로그램으로, 실행 중 클래스의 전체 이름을 지정합니다 (패키지 이름 포함). 이런 식으로 java -jar name.jar 사용하여 JAR 패키지를 직접 실행할 수 있습니다. 세 번째 클래스 경로는 포장 할 때 의존 해야하는 다른 JAR 패키지를 나타냅니다. 포장시 프로그램에 다른 JAR 패키지가 포함되어 있으므로 종속성을 추가해야합니다.
각 매니페스트 속성의 결장과 내용 사이에 공간이 있으며, 작성 후 끝에 빈 줄이 있어야합니다. 그렇지 않으면 기본 목록 속성을 찾을 수없는 런타임에 여전히 오류가 발생합니다.
요약
Jar 파일을 포장하는 데 실수를 저지르는 것은 Manifest Manifest 파일을 작성하는 것입니다. 매니페스트 매니페스트 파일은 속성과 내용 사이의 공간이 거의없고, 클래스 구내의 종속성 추가, 너무 많은 종속성 추가, 너무 많은 줄을 쓸 때 각 줄의 시작 부분에서 공백이 없음 등의 공간이 없으며, 각 줄에주의를 기울이지 않고 각 줄에주의를 기울이지 않음, 그리고 가장 중요한 파일을 작성하지 않으면 서 있습니다. 포장.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.