В этой статье подробно описывается использование команды JAR, что будет полезно каждому изучить и обобщить использование команды jar. Подробности следующие:
Пакет JAR — это уникальный сжатый документ на языке Java. Фактически каждый может понять его как пакет .zip. Конечно, есть различия. В пакете JAR есть файл META-INF/MANIFEST.MF. Когда вы найдете пакет JAR, он будет создан автоматически.
Пакет JAR создается командой каталога установки JDK /bin/jar.exe. Когда мы устанавливаем JDK и указываем путь, мы можем использовать команду jar.exe. Она будет использовать классы из lib/tool.jar. пакет инструментов. Не беспокойтесь об этих деталях.
Давайте посмотрим, как он используется:
1. параметры команды jar:
формат команды jar: jar {ctxuf}[ vme 0 M i ][каталог -C] имя файла...
Среди них необходимо выбрать один из четырех параметров {ctxu}. [vfme 0 Mi ] — необязательный параметр, также требуется имя файла.
-c создает jar-пакет
-t отображает список содержимого в банке
-x распаковать jar-пакет
-u добавляет файлы в пакет jar
-f указывает имя файла пакета jar
-v генерирует подробные отчеты и выводит их на стандартные устройства.
-m указывает файл манифеста.mf (вы можете выполнить некоторые настройки для пакета jar и его содержимого в файле манифеста.mf).
-0 не сжимает содержимое пакета jar при его создании.
-M Не создавать файл манифеста (Manifest.mf) для всех файлов. Этот параметр аналогичен настройке, игнорирующей параметр -m.
-i создает индексный файл для указанного файла jar
-C означает переход в соответствующий каталог для выполнения команды jar, что эквивалентно переходу в этот каталог, а затем выполнение команды jar без -C.
2. Примеры использования Jar:
(1) Создать пакет jar
jar cf hello.jar привет
Используйте тестовый каталог для создания пакета hello.jar. Если файл 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 uf hello.jar HelloWorld.java
Добавьте HelloWorld.java в пакет hello.jar.
(6) Создайте пакет jar несжатого содержимого:
jar cvf0 hello.jar *.class
Создайте несжатый пакет jar, используя все файлы .class в текущем каталоге.
(7) Создайте пакет jar с файлом манифеста.mf:
jar cvfm hello.jar манифест.mf привет
Созданный jar-пакет имеет дополнительный каталог META-INF, а в каталоге META-INF есть дополнительный файл манифеста.mf. Что касается роли манифеста, о нем будет упомянуто позже.
(8) Игнорируйте файл манифеста.mf:
jar cvfM hello.jar привет
Созданный пакет jar не включает каталог META-INF и файл манифеста.mf.
(9) Добавьте приложение -C:
jar cvfm hello.jar mymanifest.mf -C привет/
Это означает переключение в каталог hello и последующее выполнение команды jar.
(10)-i генерирует список индексов для файла jar:
Если содержимое jar-пакета очень хорошее, вы можете сгенерировать для него индексный файл, что кажется очень простым.
банка, привет.банка
После выполнения этой команды будет сгенерирован индексный файл с именем INDEX.LIST в папке META-INF пакета hello.jar. Будет сгенерирован список с именем пакета jar вверху.
(11) Экспортируйте список декомпрессии:
jar tvf hello.jar >hello.txt Если вы хотите просмотреть подробный процесс распаковки jar, а пакет jar большой, информация на экране будет мигать. В это время вы можете вывести список в файл и. медленно оцените!
(12)jar -cvf hello.jar hello/*
Например, исходная структура каталогов выглядит следующим образом:
привет
|---ком
|---орг
Изначально вы хотели упаковать только каталог com и каталог org, но на данный момент команда jar будет упакована вместе с hello. На это должен обратить внимание каждый. Сжатый файл, созданный командой jar, будет включать каталог после него. Нам нужно войти в каталог hello и выполнить команду jar.
Примечание. Пользователь может указать имя файла Manifest.mf произвольно, но команда jar распознает только Manifest.mf. Она соответствующим образом преобразует имя файла, указанное пользователем, поэтому пользователю не о чем беспокоиться.
3.Правила записи файла Manifest.mf:
Вы должны обратить внимание на некоторые детали при написании манифеста.mf. Это очень требовательно. Я столкнулся здесь со многими ошибками. Нет способа, поэтому я перечисляю это здесь для всех.
(1) Если не может быть пустых строк или пробелов, первая строка не может быть пустой строкой (не может быть пустой строки перед первой строкой), не может быть пустой строки между строками и не может быть пустой строки в начале строки. конец строки есть пробелы.
(2) Должна быть пустая строка, а последняя строка должна быть пустой (просто добавьте возврат каретки после ввода содержимого).
(3) Должно быть место
ключ: значение должно быть записано через пробел после точки с запятой
4. Как использовать классы в jar-пакетах
Давайте напишем небольшой пример, такой интуитивно понятный!
публичный финальный класс Person {public static int age() { return 30 }}-> javac Person.java->jar cvf person.jar Person.class
Превратите вышеуказанный файл в пакет jar.
Напишите еще один класс для его вызова:
общественный класс MyAge {public static void getAge() { System.out.println(Person.age() }});->javac MyAge.java ->java -classpath person.jar MyAge
Заинтересованные читатели могут отладить эту программу.
5. Создайте исполняемый jar-пакет.
Иногда, когда пишешь программу самостоятельно, классов бывает очень много. для чтения. В настоящее время вы можете рассмотреть возможность превращения его в исполняемый пакет jar...
(1) Отредактируйте файл манифеста.mf и добавьте следующую строку
Основной класс: MyApplet
Примечание. Размер Main-Class определен, необходимо ввести пробел после двоеточия и Enter после MyApplet, а затем сохранить.
(2) Упаковка
jar cvfm FirstApplet.jar манифест.mf MyApplet.class
Примечание. Manifest.mf указывается как путь к классу (например: hello.Hello) или имя файла (апплета), в котором хранится файл Mani-Class: MyApplet.
(3) Использование исполняемого jar-файла
java -jar ПервыйApplet.jar
Его также можно использовать в <applet></applet>:
<код апплета=MyApplet archive=FirstApplet.jar width=200 height=100></applet>
Примечание. Класс не указан. Вы можете просто написать его. Вы можете выбрать имя класса и имя пакета по своему усмотрению. Вы можете изменить его соответствующим образом...
6. Расширьте свои занятия
В каталоге установки JDK/jre/lib/ext SUN позволяет нам расширять наши собственные классы. Вы можете вводить свои собственные файлы классов в пакеты .jar и размещать их в этом каталоге. Он устанавливается классом ExtClassLoader. За загрузку отвечает загрузчик классов, а загрузчик классов ExtClassLoader — AppClassL. Родительский загрузчик загрузчика классов загрузчика, AppClassLoader, в основном отвечает за загрузку файлов по пути CLASSPATH, а механизм, используемый в Java, заключается в делегировании родительского загрузчика, поэтому файлы классов в jar, хранящиеся в этом каталоге, не имеют каких-либо настройки, загрузчик классов может найти нормальную загрузку, не правда ли, очень удобно, ха...
Если ваш .jar предназначен для приложений-апплетов, вы можете добавить следующие две строки в его файл манифеста.mf, прежде чем упаковывать его в пакет jar.
Путь к классу: FirstApplet.jarПуть к классу: SecondApplet.jarMain-Class: MyApplet
Примечание. В пути к классу можно указать несколько элементов, просто напишите имя пакета jar напрямую. Main-Class в основном используется, когда в jar-файле имеется несколько файлов классов .class. Java не знает, какой из них является основным, поэтому его необходимо указать, если в пакете jar есть только один класс. не нужно указывать.
Порядок, в котором Java вызывает классы: Классы в java/lib/ext ---> Классы, указанные в Manifest.mf --> Классы в текущем каталоге --> Классы, указанные в наборе CLASSPATH.
7. Вызовите пакет jar в сети URL.
(1) Создайте URL-адрес пакета jar.
URL u=new URL("jar:"+"FirstApplet.jar"+!/");
(2) Создайте объект jarURLConnection.
JarURLConnection juc=(JarURLConnection)u.openConnection();
(3) Верните имя основного класса в пакете jar.
Атрибуты attr=juc.getMainAttributes();String name=attr.getValue("Mani-Class");
Обязательно убедитесь, что атрибут Mani-Class правильно установлен в файле Manifest.mf вашего jar-пакета. Опять же, вы должны обратить внимание на правила.
(4) Создайте объект класса на основе полученного имени основного класса.
Класс c=Class.forName(имя);
(5) Вызовите его основной метод в соответствии с объектом класса:
Метод cm=c.getMethod("main",new Class[]{String.class}); cm.invoke(null,new Object[]{});
Совет: вышеизложенное использует знания о механизме отражения Reflection. Если вас интересуют несколько механизмов отражения, вы можете просмотреть соответствующий контент в пакете java.lang.reflect.
8. Советы по использованию команд JAR:
(1) jar создает сжатый ZIP-файл.
jar cvfM TestZIP.jar тест
Просто добавьте параметр M, чтобы не генерировать контент, связанный с META-INF, а затем замените TestZIP.jar на TestZIP.zip, не правда ли, очень просто....
(2) Используйте WinRAR для распаковки файла .jar.
Как мы уже говорили выше, файл JAR представляет собой специальный сжатый файл, поэтому, конечно, его можно распаковать с помощью некоторых из наших обычно используемых инструментов распаковки. Что касается того, как его распаковать, мне не нужно вам рассказывать.
(3) Используйте WinRAR для создания файлов .jar.
Мы уже говорили, что основное отличие JAR-пакетов от ZIP-пакетов заключается в том, что в JAR-пакете есть дополнительный каталог META-INF. В каталоге META-INF находится файл манифеста. Нам нужно только создать соответствующий каталог. каталог и сжать его.
Структура каталогов следующая:
TestJar
|--МЕТА-ИНФ
|--manifest.mf
|--Связанные файлы классов