이 기사에서는 JAR 명령의 사용법을 자세히 설명합니다. 이는 모든 사람이 jar 명령의 사용법을 배우고 요약하는 데 도움이 될 것입니다. 세부사항은 다음과 같습니다:
JAR 패키지는 Java의 고유한 압축 문서입니다. 실제로 모든 사람이 .zip 패키지로 이해할 수 있습니다. 물론 차이점도 있습니다. JAR 패키지에는 META-INF/MANIFEST.MF 파일이 있습니다. JAR 패키지를 찾으면 자동으로 생성됩니다.
JAR 패키지는 JDK 설치 디렉토리 /bin/jar.exe 명령에 의해 생성됩니다. JDK를 설치하고 경로를 설정하면 lib/tool.jar의 클래스를 정상적으로 사용할 수 있습니다. 도구 패키지 . 이러한 세부 사항에 대해 걱정하지 마십시오.
그것이 어떻게 사용되는지 봅시다:
1. jar 명령 매개변수:
jar 명령 형식: jar {ctxuf}[ vme 0 M i ][-C 디렉토리] 파일 이름...
그 중 4개의 매개변수 {ctxu} 중 하나를 선택해야 합니다. [vfme 0 M i ]는 선택적 매개변수이며 파일 이름도 필수입니다.
-c는 jar 패키지를 생성합니다.
-t는 jar의 내용 목록을 표시합니다.
-x jar 패키지 압축 해제
-u jar 패키지에 파일을 추가합니다.
-f는 jar 패키지의 파일 이름을 지정합니다.
-v는 자세한 보고서를 생성하고 이를 표준 장치에 출력합니다.
-m은 Manifest.mf 파일을 지정합니다(manifest.mf 파일에서 jar 패키지 및 해당 컨텐츠에 대한 일부 설정을 지정할 수 있습니다).
-0은 생성 시 jar 패키지의 내용을 압축하지 않습니다.
-M 모든 파일에 대해 매니페스트 파일(Manifest.mf)을 생성하지 않습니다. 이 매개변수는 -m 매개변수를 무시하는 설정과 동일합니다.
-i 지정된 jar 파일에 대한 인덱스 파일을 생성합니다.
-C는 해당 디렉토리로 이동하여 jar 명령을 실행하는 것을 의미합니다. 이는 해당 디렉토리로 cd한 다음 -C 없이 jar 명령을 실행하는 것과 같습니다.
2. Jar 사용 예:
(1) jar 패키지 생성
jar cf hello.jar 안녕하세요
hello.jar 패키지를 생성하려면 test 디렉터리를 사용하세요. hello.jar이 있으면 덮어쓰게 됩니다.
(2) 포장 프로세스 생성 및 표시
jar cvf hello.jar 안녕하세요
hello 디렉토리를 사용하여 hello.jar 패키지를 생성하고 생성 프로세스의 예를 보여줍니다.
E:/>jar cvf hello.jar 안녕하세요
명백한
추가: hello/(읽기 = 0) (쓰기 = 0) (0% 저장됨)
추가됨: hello/TestServlet2.class (읽기 = 1497) (쓰기 = 818) (45% 압축)
추가됨: hello/HelloServlet.class (읽기 = 1344) (쓰기 = 736) (45% 압축)
추가됨: hello/TestServlet1.class (읽기 = 2037) (쓰기 = 1118) (45% 압축)
(3) 디스플레이 용기 패키지:
jar tvf hello.jar hello.jar 패키지의 내용을 확인합니다. 지정된 jar 패키지가 실제로 존재해야 합니다. 그렇지 않으면 FileNoutFoundException이 발생합니다.
(4) jar 패키지의 압축을 풉니다.
jar xvf hello.jar
현재 디렉토리에 hello.jar의 압축을 푼다
(5) jar에 파일을 추가합니다.
jar uf hello.jar HelloWorld.java
hello.jar 패키지에 HelloWorld.java 추가
(6) 압축되지 않은 콘텐츠 jar 패키지를 생성합니다.
jar cvf0 hello.jar *.class
현재 디렉토리의 모든 .class 파일을 사용하여 압축되지 않은 jar 패키지 생성
(7) Manifest.mf 파일을 사용하여 jar 패키지를 생성합니다.
jar cvfm hello.jar 매니페스트.mf hello
생성된 jar 패키지에는 META-INF 디렉터리가 추가로 존재하며, META-INF 디렉터리에는 Manifest.mf 파일이 추가로 존재하며, Manifest.mf의 역할에 대해서는 후술한다.
(8) Manifest.mf 파일을 무시하십시오.
jar cvfM hello.jar 안녕하세요
생성된 jar 패키지에는 META-INF 디렉터리 및 Manifest.mf 파일이 포함되어 있지 않습니다.
(9) -C 애플리케이션을 추가합니다.
jar cvfm hello.jar mymanifest.mf -C 안녕하세요/
이는 hello 디렉토리로 전환한 다음 jar 명령을 실행하는 것을 의미합니다.
(10)-i는 jar 파일에 대한 인덱스 목록을 생성합니다.
jar 패키지의 콘텐츠가 매우 좋으면 이에 대한 인덱스 파일을 생성할 수 있는데 이는 매우 문제가 없어 보입니다.
항아리 안녕하세요.jar
이 명령을 실행하면 hello.jar 패키지의 META-INF 폴더에 INDEX.LIST라는 인덱스 파일이 생성됩니다. 맨 위에 jar 패키지 이름이 포함된 목록이 생성됩니다.
(11) 압축 해제 목록 내보내기:
jar tvf hello.jar >hello.txt jar 압축을 푸는 과정을 자세히 보고 싶은 경우, jar 패키지가 큰 경우 화면 정보가 깜박거리며, 이때 목록을 파일로 출력할 수 있습니다. 천천히 감사합니다!
(12)jar -cvf hello.jar 안녕하세요/*
예를 들어 원래 디렉터리 구조는 다음과 같습니다.
안녕하세요
|---com
|---조직
원래는 com 디렉터리와 org 디렉터리만 패키징하려고 했지만 이번에는 jar 명령이 hello와 함께 패키징됩니다. 모두가 이것에 주의를 기울여야 합니다. jar 명령으로 생성된 압축 파일에는 그 뒤에 디렉터리가 포함됩니다. hello 디렉토리에 들어가서 jar 명령을 실행해야 합니다.
참고: 파일 이름은 사용자가 임의로 지정할 수 있지만 jar 명령은 Manifest.mf만 인식하므로 사용자가 지정한 파일 이름을 그에 맞게 변환하므로 사용자는 걱정할 필요가 없습니다.
3.Manifest.mf 파일 작성 규칙:
Manifest.mf를 작성할 때 몇 가지 세부 사항에 주의해야 합니다. 여기서는 많은 실수를 겪었습니다. 방법이 없으므로 여기에 나열합니다.
(1) 빈 줄이나 공백이 있을 수 없는 경우, 첫 번째 줄은 빈 줄이 될 수 없으며(첫 번째 줄 앞에 빈 줄이 있을 수 없음), 줄 사이에 빈 줄이 있을 수 없으며, 다음 줄에도 빈 줄이 있을 수 없습니다. 줄 끝에 공백이 있습니다.
(2) 빈 줄이 있어야 하며, 마지막 줄도 빈 줄이어야 합니다. (내용 입력 후 캐리지 리턴을 추가하면 됩니다.)
(3) 공간이 있어야 한다
키: 값은 세미콜론 뒤에 공백을 넣어 작성해야 합니다.
4. jar 패키지에서 클래스를 사용하는 방법
매우 직관적인 작은 예를 작성해 보겠습니다!
공개 최종 클래스 Person{ public static int age() { return 30 }}-> javac Person.java->jar cvf person.jar Person.class
위 파일을 jar 패키지로 만듭니다.
호출할 다른 클래스를 작성하세요.
공개 클래스 MyAge{ 공개 정적 void getAge() { System.out.println(Person.age() }}->javac MyAge.java ->java -classpath person.jar MyAge
관심 있는 독자는 이 프로그램을 디버깅할 수 있습니다.
5. 실행 가능한 jar 패키지 생성
가끔 혼자서 프로그램을 작성하다 보면 클래스가 너무 많아 시간이 지나면 어느 클래스가 메인 클래스인지조차 알 수 없게 되고, 게다가 사용된 사진이나 기타 파일도 많아 혼란스러울 때가 있습니다. 현재로서는 실행 가능한 jar 패키지로 만드는 것을 고려할 수 있습니다.
(1) Manifest.mf 파일을 편집하고 다음 줄을 추가합니다.
메인 클래스: MyApplet
참고: Main-Class의 크기가 결정되며, 콜론 뒤의 공백, MyApplet 뒤의 Enter를 입력한 후 저장해야 합니다.
(2) 포장
jar cvfm FirstApplet.jar 매니페스트.mf MyApplet.class
참고: Mani-Class: MyApplet 파일이 저장되는 클래스 경로(예: hello.Hello) 또는 파일 이름(애플릿)으로 매니페스트.mf가 지정됩니다.
(3) 실행 가능한 jar 사용
자바 -jar FirstApplet.jar
<applet></applet>에서도 사용할 수 있습니다.
<applet code=MyApplet archive=FirstApplet.jar 너비=200 높이=100></applet>
참고: 클래스는 제공되지 않습니다. 하나만 작성해도 됩니다. 클래스 이름과 패키지 이름은 원하는 대로 변경할 수 있습니다.
6. 자신만의 수업을 확장하세요
JDK 설치 디렉토리/jre/lib/ext 디렉토리에서 SUN은 자체 클래스를 확장할 수 있는 편의를 제공합니다. 사용자 고유의 클래스 파일을 .jar 패키지에 입력하고 이 디렉토리에 배치할 수 있습니다. 이는 ExtClassLoader 클래스에 의해 설치됩니다. 클래스 로더는 로딩을 담당하며 ExtClassLoader 클래스 로더는 AppClassL입니다. 로더 클래스 로더의 상위 로더인 AppClassLoader는 주로 CLASSPATH 경로에 있는 파일을 로드하는 역할을 담당하며, Java에서 사용되는 메커니즘은 상위 로더를 위임하는 것이므로 이 디렉토리에 저장된 jar의 클래스 파일에는 아무런 권한도 없습니다. 설정을 사용하면 클래스 로더가 일반 로딩을 찾을 수 있는데, 정말 편리하지 않나요?
.jar이 애플릿 애플리케이션용인 경우 jar 패키지로 패키징하기 전에 매니페스트.mf에 다음 두 줄을 추가할 수 있습니다.
클래스 경로: FirstApplet.jarClass-경로: SecondApplet.jarMain-클래스: MyApplet
참고: 클래스 경로는 여러 항목으로 설정할 수 있습니다. jar 패키지 이름을 직접 작성하면 됩니다. Main-Class는 jar에 여러 개의 .class 클래스 파일이 있을 때 주로 사용되는데, Java는 어느 클래스가 메인 클래스인지 모르므로 jar 패키지에 클래스가 하나만 있으면 당연히 지정해야 합니다. 지정할 필요는 없습니다.
Java가 클래스를 호출하는 순서는 다음과 같습니다. java/lib/ext의 클래스 ---> Manifest.mf에 지정된 클래스 --> 현재 디렉토리의 클래스 --> set CLASSPATH에 지정된 클래스.
7. URL 네트워크에서 jar 패키지를 호출합니다.
(1) jar 패키지의 URL을 생성합니다.
URL u=new URL("jar:"+"FirstAppplet.jar"+!/");
(2) jarURLConnection 객체 생성
JarURLConnection juc=(JarURLConnection)u.openConnection();
(3) jar 패키지의 메인 클래스 이름을 반환합니다.
속성 attr=juc.getMainAttributes();String name=attr.getValue("Mani-Class");
jar 패키지의 Mani-Class 속성이 올바르게 설정되었는지 확인하십시오. 다시 한 번 규칙에 주의해야 합니다.
(4) 획득한 메인 클래스 이름을 기반으로 Class 객체를 생성합니다.
클래스 c=Class.forName(이름);
(5) Class 객체에 따라 기본 메소드를 호출합니다.
메소드 cm=c.getMethod("main",new Class[]{String.class}) cm.invoke(null,new Object[]{});
팁: 위의 내용은 반사 반사 메커니즘에 대한 지식을 사용합니다. 다중 반사 메커니즘에 관심이 있는 경우 java.lang.reflect 패키지에서 관련 콘텐츠를 확인할 수 있습니다.
8. JAR 명령 사용에 대한 팁:
(1) jar는 압축된 ZIP 파일을 생성합니다.
jar cvfM TestZIP.jar 테스트
META-INF 관련 내용을 생성하지 않으려면 M 매개변수를 추가한 다음 TestZIP.jar을 TestZIP.zip으로 변경하면 됩니다....
(2) WinRAR을 사용하여 .jar 파일의 압축을 풉니다.
위에서 말했듯이 JAR 파일은 특수 압축 파일이므로 일반적으로 사용되는 압축 해제 도구를 사용하여 압축을 풀 수 있습니다.
(3) WinRAR을 사용하여 .jar 파일 생성
JAR 패키지와 ZIP 패키지의 주요 차이점은 JAR 패키지에 추가 META-INF 디렉토리가 있다는 점입니다. META-INF 디렉토리 아래에 매니페스트.mf 파일이 있습니다. 디렉토리를 찾아서 압축하세요.
디렉토리 구조는 다음과 같습니다.
테스트병
|--메타-INF
|--manifest.mf
|--관련 클래스 파일