Реализация пакета JAR
Пакет JAR можно упаковать с помощью директивы JAR. Ввод JAR в командную строку может просмотреть содержимое директивы JAR
Из двух примеров, показанных в последнем шоу, есть два способа упаковки. Разница между ними заключается в том, использовать ли определенный вами файл манифеста. Первый пример не упакован с использованием файла Manifest, поэтому файл Manifest в окончательном сгенерированном пакете JAR является файлом по умолчанию. Этот метод подходит для относительно простой структуры пакета JAR, нет другой зависимости от пакета JAR, и сгенерированный пакет JAR не нуждается в исполнении. Пакет JAR, сгенерированный таким образом, не может быть выполнен с использованием команды java -jar XXX.jar поскольку запись программы не указана в файле Manifest. Второй экземпляр является относительно распространенным методом упаковки, то есть используйте пользовательский файл манифеста для участия в упаковке, чтобы вы могли добавить зависимости в пакет и указать запись в программе для реализации java -jar XXX.jar для непосредственного запуска пакета JAR.
Первый простой метод упаковки
Самое простое - упаковать и вывести скомпилированный файл байткода класса в текущей папке. Примеры следующие:
Напишите три файла Java, test1.java test2.java и main.java
public class test1 {public static void main (string [] args) {} public void display () {system.out.println ("Это класс test1"); }}и test2.java файл
public class test2 {public static void main (string [] args) {} public void display () {System.out.println ("Это класс test2"); }}Main.java
открытый класс 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 для упаковки скомпилированного файла класса
Добавленный список отображается во время упаковки. Используйте инструмент декомпрессии, чтобы открыть сгенерированный пакет test.jar , и вы можете увидеть следующую структуру:
В дополнение к скомпилированным трем файлам класса существует дополнительная папка мета-инф, которая содержит manifest.mf (файл списка). Роль этого файла очень важна, как объяснено позже. Давайте сначала посмотрим на содержимое в нем
Очень простой манифест, содержит только манифестную версию и версию Java.
Выполнение java -jar test.jar В настоящее время имеет следующий эффект:
Ошибка атрибута основного списка не сообщается. Это потому, что мы используем первый метод для генерации банки с помощью манифеста по умолчанию. В манифесте по умолчанию не указывается запись в программе, поэтому возникает ошибка.
Вы можете напрямую изменить манифестный файл в пакете JAR (откройте инструмент декомпрессии и сохранить его после изменения) и изменить его на следующий эффект:
После выполнения java -jar test.jar снова программа входит в правильный контент:
Атрибут основного класса добавляется в файл манифеста и указывает запись в программе, которая реализует прямое выполнение файла JAR.
Следовательно, использование манифеста по умолчанию не может напрямую выполнить файл JAR. Либо используйте манифестный файл, который вы определяете, чтобы упаковать его, либо изменить манифестный файл в пакете.
Второй способ упаковать
Второй метод упаковки более общий. Вообще говоря, первой строкой файла Java является package XXX; То есть, имя пакета, оно также определяет путь скомпилированного файла класса. Когда есть несколько Java -файлов, которые нужно скомпилировать и упаковать, и у них разные имена пакетов, очень нереально писать один файл за раз при упаковке в соответствии с первым методом, поэтому есть второй метод. Поместите все каталоги, которые существуют в файлах класса для упаковки, и пакеты JAR -зависимости в корневой папке (например, 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 ("Это класс test1"); }} пакет cn.mytest2; public class test2 {public static void main (string [] args) {} public void display () {System.out.println ("Это класс 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 ("Передача параметра"+item); } test1 t1 = new test1 (); test2 t2 = new test2 (); t1.display (); t2.display (); }} Также составленная с использованием директивы Javac, три файла класса существуют в разных путях, потому что их имена пакетов различны. Поместите все скомпилированные папки, содержащие файлы классов в папке Foo:
Затем напишите манифестный файл за пределами Foo:
Содержание манифеста заключается в следующем:
Примечание . Последняя строка манифестного файла является пустой строкой.
Выполните команду из командной строки: jar cvfm test.jar MANIFEST.MF -C foo/ .
Проверьте, можно ли запускать пакет JAR непосредственно в командной строке, используйте команду java -jar test.jar
Правильно пакет и успешно запустите банку.
Manifest File Введение
Через два приведенных примера мы видим, что манифестный файл необходим для упаковки JAR. Манифестный файл описывает подробную информацию о упакованном файле JAR и существует в упакованной папке Meta-Inf. Основное содержание простого манифестного файла заключается в следующем:
Главное, что три атрибута манифестной версии основного класса-трассы очень важны при создании пакетов банок. Manifest-Version-это номер версии, просто напишите соответственно. Основной класс-это программа записи пакета JAR, которая указывает полное имя класса Hunning (должно включать имя пакета). Таким образом, вы можете использовать java -jar name.jar чтобы напрямую запустить пакет JAR. Третий класс-проход относится к другим пакетам JAR, на которые необходимо полагаться при упаковке. При упаковке ваша программа также может содержать другие пакеты JAR, поэтому вам необходимо добавить зависимости.
Обратите внимание, что между толстой кишкой и содержанием каждого манифестного атрибута существует пространство, и в конце должна быть пустая строка в конце, в противном случае во время выполнения все еще будет ошибка, когда основной атрибут списка не может быть найден.
краткое содержание
Легко сделать ошибки в файлах упаковки JAR-это написание манифестных файлов Manifest, которые подвержены форматированию ошибок, таких как несколько промежутков между толстой кишкой атрибута и содержанием, не пробелы между добавлением зависимостей в классе-пате, слишком много зависимостей, никаких мест в начале каждой строки, когда написали несколько строк, не будут в конце концов, не будут нанесены на все ключевые точки, когда вы записаны и не обращают на это время, и не обращают на это время, и в этом случае не будут затрагивают свои платы и не будут.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.