Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Java как создать jar файл


Что такое JAR-файлы

JAR-файлы — что это такое ?

JAR расшифровывается как Java ARchive — архив Java. Если не особо вдаваться в подробности (что в общем-то часто и происходит в реальности), то JAR-файл представляет собой обычный ZIP-файл с некоторыми дополнениями. Основная задача этого архива — хранить файлы с классами. Т.е. пакеты/каталоги (мы о них говорили в разделе Пакеты), внутри которых находятся class-файлы архивируются и JVM может их использовать уже в более удобном (компактном) виде.
Выгода очевидна — в реальных проектах вы вряд ли будете ограничиваться использованием библиотек классов только из JDK — скорее всего вы будете подключать сотни (если не тысячи) классов, которые были созданы для решения определенных задач. Если все это огромное количество лежало бы на диске в виде class-файлов, то несложно понять, насколько это неудобно и громоздко. Разработчики Java предложили вполне элегантное решение — вы можете подключать архивные файлы, в которых запакованы тысячи скомпилированных классов. Что конечно же удобнее, чем таскать за собой в каждый проект все директории со всеми файлами.
Для примера можете заглянуть в каталог JAVA_HOME/jre/lib — там находится очень важный архив — rt.jar. Эта библиотека содержит практически все классы, который мы рассматривали — String, JFrame, JButton, Date, Object. Открыть его вы можете с помощью любого архиватора.
Просматривая содержимое JAR-файла, вы рано или поздно обратите внимание на каталог META-INF. В нем содержится файл MANIFEST.MF. Я настоятельно рекомендую вам почитать информацию о нем в документе Working with Manifest Files: The Basics. Файл позволяет расширить функциональность — кроме обычного набора классов, JAR-файл может выполнять функции электронной подписи, поддержки версионности, подключения библиотек к самому архиву, определение класса для запуска (который содержит метод main). В данной статье я не ставлю себе цель разборать эти возможности, так что отложим на будущее. Займемся базовыми вопросами использования JAR-файлов.

Создание JAR

Использование IDE

Практически все IDE умеют создавать JAR. Мы сделаем это на примере NetBeans, другие IDE вы можете рассмотреть самостоятельно. Что является не всегда интуитивно понятной задачей. В среде NetBeans создать JAR очень несложно. Для этого надо сделать следующие шаги:

  1. Создать проект в NetBeans. Тип проекта — «New Class Library»
  2. В этом проекте вы создаете нужные вам классы и потом выполняете команду «Build». Это либо кнопка F11, либо пункт меню «Run — Build Project», либо кликаете правой кнопкой на проекте в панели Project и выбираете пункт «Build» (или «Clean and Build»).

В каталоге с проектом можно увидеть каталог dist в котором и будет находиться JAR-файл. Как я уже упоминал, в других типах IDE этот процесс может выглядеть иначе. Например, в Eclipse это делается через экспорт, а в IDEA — через создание артефактов. В данной цикле статей я не планирую пока останавливаться на этом подробно, хотя если получится — значит прямо здесь и добавлю.

Использование утилиты jar

Также JAR-файл может быть создан с использованием утилиты jar, которая находится в каталоге JAVA_HOME/bin. Достаточно подробно эта утилита разобрана здесь: Creating a JAR File.
В самом просто варианте вам надо создать классы в какой-либо директории, а потом вызвать эту утилиту с такой командой

jar cf <имя JAR-файла> <список входных файлов>

jar cf <имя JAR-файла> <список входных файлов>

Например, если у меня есть класс edu/javacourse/jar/SayHello.class, то команда создания архивного файла с именем say.jar выглядела бы так:

jar cf say.jar edu/javacourse/jar/SayHello.class

jar cf say.jar edu/javacourse/jar/SayHello.class

Опции «cf» означают: «c» — создать, «f» — файл. Ну а дальше я думаю очевидно — имя файла архива и список файлов. Причем в списке можно указывать много файлов через пробел, а также можно использовать маску — знаки «*» и «?». Если вы не знакомы с такими знаками — наберите в поисковике «маски файлов использование» и наслаждайтесь новыми знаниями.
Чтобы посмотреть содержимое файла вы можете (как я уже говорил выше) использовать практически любой архиватор или тут же команду jar.exe вот в таком виде

В обоих случаях (IDE или утилита jar) в архиве будет создаваться файл MANIFEST.MF. Как я уже писал — есть смысл почитать о дополнительных свойствах JAR-файлов. Т.к. в документации все очень н

Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA

Создаем исполняемый jar в Intellij IDEA

Как оказалось, не так то и просто найти в просторах интернета информацию об этом. Есть много ссылок на то, как это делается в Eclipse, а про Intellij IDEA сказано не многим больше нуля. Поэтому я создал этот пост. Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 1IntelliJ IDEA дает возможность быстро создавать исполняемый JAR-файл вашей программы, содержащий модули со всеми зависимостями. Для того, чтобы создать JAR, необходимо проделать всего 3 пункта:
  1. Нажмите кнопку ‘+’ в диалоговом окне Project Structure и выберите соответствующий пункт (Рисунок 1):
    Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 2Рисунок 1 – Project Structure -> Artifacts -> Jar -> From modules with dependencies
  2. Далее IntelliJ IDEA показывает диалог, позволяющий настроить новый артефакт (Рисунок 2):
    Здесь нужно выбрать главный класс вашего проекта и нажать ОK
    Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 3

    Рисунок 2 – Диалог создания нового артефакта JAR
  3. После нажатия клавиши ОК, вы можете создать файл Jar с помощью пункта меню Build -> Build Artifact
    По умолчанию все библиотеки будут извлечены в целевой Jar. Сам исполняемый файл будет сгенерирован в директории out -> artifacts вашего проекта (Рисунок 3):
    Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 4

    Рисунок 3 – Месторасположение сгенерированного JAR файла
    Все, теперь исполняемый файл можно запускать.
См. также мои другие статьи:

Как создать исполняемый JAR с помощью Maven

В этой статье мы рассмотрим упаковку Maven- проекта в файл Jar. Выясним преимущества и недостатки каждого из подходов, применяемых для создания исполняемого файла.

Чтобы создать исполняемый файл jar, не требуются дополнительные зависимости. Нам нужно просто создать Java-проект Maven с одним классом и методом main(…).

В приведенном ниже примере мы создаем Java-класс ExecutableMavenJar. Для этого в файл pom.xml нужно добавить следующие элементы:

<modelVersion>4.0.0</modelVersion> <groupId>com.baeldung</groupId> <artifactId>core-java</artifactId> <version>0.1.0-SNAPSHOT</version> <packaging>jar</packaging>

Удостоверьтесь в том, что в конфигурации задан тип jar. Теперь можно приступить к реализации каждого из подходов.

Для этого мы используем плагин maven-dependency-plugin. Сначала скопируем все необходимые зависимости в указанную папку:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/libs </outputDirectory> </configuration> </execution> </executions> </plugin>

Сначала мы задаем цель copy-dependencies, что указывает Maven скопировать эти зависимости в заданный outputDirectory.

В данном случае мы создадим папку с именем libs внутри каталога сборки проекта (обычно это папка target).

Затем мы создаем исполняемый файл jar с указанными путями к классам и со ссылкой на зависимости, скопированные на первом шаге:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>libs/</classpathPrefix> <mainClass> org.baeldung.executable.ExecutableMavenJar </mainClass> </manifest> </archive> </configuration> </plugin>

Наиболее важной частью приведенного выше кода является конфигурация manifest. В ней мы добавляем classpath со всеми зависимостями (папка libs/), а также предоставляем информацию о главном классе.

Преимущества и недостатки этого подхода:

  • Преимущества — прозрачный процесс, в рамках которого можно прописать каждый шаг.
  • Недостатки — зависимости находятся вне финального файла jar. Поэтому он будет работать только, если папка libs будет доступна и видима для jar-файла.

Плагин Apache Maven Assembly позволяет объединять выходные данные проекта вместе с зависимостями, модулями, документацией и другими файлами в единый пакет.

Основной целью в плагине сборки является single. Она используется для создания любых сборок. Остальные цели устарели и будут удалены в следующей версии плагина.

Рассмотрим конфигурацию, заданную в файле pom.xml:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <archive> <manifest> <mainClass> org.baeldung.executable.ExecutableMavenJar </mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </execution> </executions> </plugin>

Как и при ручной настройке, сначала нужно предоставить информацию о главном классе. Но плагин автоматически скопирует все необходимые зависимости в файл JAR .

В descriptorRefs мы указали имя, которое будет добавлено к имени проекта. В нашем случае – это core-java-jar-with-dependencies.jar.

  • Преимущества – зависимости хранятся внутри jar-файла.
  • Недостатки — упрощенный контроль упаковки артефакта. Например, нет поддержки перемещения классов.

Плагин позволяет упаковывать артефакт в uber-jar, который включает в себя все зависимости, необходимые для запуска проекта. Кроме того, он поддерживает переименование пакетов некоторых зависимостей.

Рассмотрим приведенную ниже конфигурацию:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <executions> <execution> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>true</shadedArtifactAttached> <transformers> <transformer implementation= "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>

В этой конфигурации <shadedArtifactAttached> отмечает все зависимости, которые должны быть упакованы в файл jar.

Затем нам нужно указать реализацию трансформатора. В текущем примере мы использовали стандартную версию. В конце задаем основной класс приложения.

Выходной файл получит название core-java-0.1.0-SNAPSHOT-shaded.jar, где core-java — это имя проекта. За ним следуют версия и имя плагина.

  • Преимущества — зависимости внутри jar-файла, расширенный контроль упаковки артефакта.
  • Недостатки — сложная конфигурация (особенно если необходимо использовать расширенные функции).

Плагин предоставляет собственный загрузчик, который знает, как загружать классы и ресурсы из jar-файлов архива.

Рассмотрим приведенную ниже конфигурацию:

 <plugin> <groupId>com.jolira</groupId> <artifactId>onejar-maven-plugin</artifactId> <executions> <execution> <configuration> <mainClass>org.baeldung.executable. ExecutableMavenJar</mainClass> <attachToBuild>true</attachToBuild> <filename> ${project.build.finalName}.${project.packaging} </filename> </configuration> <goals> <goal>one-jar</goal> </goals> </execution> </executions> </plugin>

Сначала необходимо указать основной класс и прикрепить все зависимости сборки, используя для этого attachToBuild = true .

Также необходимо задать имя файла для вывода. Цель Maven — это one-jar.

В One Jar зависимости jar не будут расширены в файловую систему во время выполнения.

  • Преимущества — позволяет классам располагаться на верхнем уровне One Jar. Плагин поддерживает внешние jar и собственные библиотеки.
  • Недостатки – не обновляется с 2012 года.

Плагин позволяет упаковывать исполняемые архивы jar или war и запустить приложение «на месте». Он поддерживает Maven версии 3.2 или выше. Более подробное описание плагина доступно здесь.

Рассмотрим приведенную ниже конфигурацию:

 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>spring-boot</classifier> <mainClass> org.baeldung.executable.ExecutableMavenJar </mainClass> </configuration> </execution> </executions> </plugin> 

Между Spring и другими плагинами есть два существенных отличия: цель выполнения называется repackage, а классификатор — spring-boot . Обратите внимание, что плагин можно использовать без Spring Boot.

  • Достоинства – зависимости располагаются внутри jar- файла, его можно запускать в любом доступном месте, улучшенный контроль упаковки артефакта, исключение зависимостей из jar-файла и упаковка war файлов.
  • Недостатки — добавляет ненужные классы, связанные с Spring и Spring Boot.

В последней части статьи мы рассмотрим упаковку автономного веб-приложения в jar-файл. Но для этого понадобится другой плагин.

<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> <executions> <execution> <id>tomcat-run</id> <goals> <goal>exec-war-only</goal> </goals> <phase>package</phase> <configuration> <path>/</path> <enableNaming>false</enableNaming> <finalName>webapp.jar</finalName> <charset>utf-8</charset> </configuration> </execution> </executions> </plugin>

Чтобы создать jar-файл, запустите man package, который создаст webapp.jar в каталоге target.

Чтобы запустить приложение, просто введите в консоли: java -jar target / webapp.jar и проверьте результат по адресу: localhost:8080/.

  • Преимущества — наличие одного файла, простота развертывания и запуска.
  • Недостатки — размер файла намного больше.

Обратите внимание на то, что это последняя версия данного плагина, поддерживающая сервер Tomcat7. Чтобы избежать ошибок, обязательно убедитесь в том, что для зависимости Servlets scope задано значение provided. Иначе во время выполнения jar-файла возникнет конфликт:

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>

В этой статье мы рассмотрели несколько способов создания исполняемого jar-файла с помощью различных плагинов Maven. Полную реализацию этого руководства вы сможете найти в проектах, опубликованных на Github:

Исполняемый jar

Исполняемый war

Как проверить? Чтобы скомпилировать проект в исполняемый файл jar, запустите Maven с помощью команды mvn clean package.

Надеемся, что данная статья помогла разобраться в этой теме.

Данная публикация представляет собой перевод статьи «How to Create an Executable JAR with Maven» , подготовленной дружной командой проекта Интернет-технологии.ру

Как создать Jar файл в Maven – Devcolibri

В этом уроке я покажу вам, как использовать Maven для создания Java проекта и упаковать его в *.jar файл, а также как сделать его исполняемым.

1) Создание Maven проекта.

Есть два способа создать Maven project:

1. С помощью maven command:

$ mvn archetype:generate -DgroupId=com.devcolibri.core -DartifactId=projectMy -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2. С иcпользованием IDE, в моем случае это Intellij IDEA 11.3

2. Создание jar файла

Чтобы создать jar файл нам потребуется добавить в конфигурационный Maven файл pom.xml.

В этом файле в теге <pagckaging>jar</pagckaging>

<project xmlns="http://maven.apache.org/POM/4.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.devcolibri.core</groupId>
 <artifactId>projectMy</artifactId>
 <packaging>jar</packaging>
 <version>1.0</version>
 <name>projectMy</name>
 <url>http://maven.apache.org</url>
 
 <properties>
 <jdk.version>1.6</jdk.version>
 </properties>
 
 <build>
 <plugins>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>2.3.2</version>
 <configuration>
 <source>${jdk.version}</source>
 <target>${jdk.version}</target>
 </configuration>
 </plugin>
 </plugins>
 </build>
 </project>

Если вы попытаетесь собрать проект Maven, Maven упакует этот проект в “jar” файл с именем "projectMy-1.0.jar", найти этот файл вы можете в корне проекта в папке target.

3. Делаем *.jar исполняемым.

Для того, чтобы *.jar файл был исполняемый, мы должны объявить точку входа в приложениe через maven-jar-plugin в pom.xml

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-jar-plugin</artifactId>
 <version>2.4</version>
 <configuration>
 <archive>
 <manifest>
 <mainClass>com.devcolibri.core.Main</mainClass>
 </manifest>
 </archive>
 </configuration>
 </plugin>

Чтобы выполнить jar файл, используйте java -jar :

$ java -jar superman-1.0.jar 
 Hello World!

JAR-Файлы - Java программирование | ExamClouds

Для удобства распространения приложения, в Java существует такой механизм как JAR (Java Archive) файлы. JAR-файлы используются для архивации и сжатия данных.

Базовый формат команды для создания JAR-файла такой:

jar -cf jar-файл входной-файл(ы)

Сгерированный JAR-файл будет помещен в текущий каталог.

Рассмотрим ключи и аргументы, использованные в этой команде:

  • Ключ c показывает, что необходимо создать (create) JAR-файл.
  • Ключ f показывает, что необходимо направить вывод в файл, а не в стандартный поток вывода.
  • jar-файл - это имя, которое необходимо дать результирующему JAR-файлу. Вы можете использовать любое имя для JAR-файл. По соглашению, имени JAR-файла дается расширение .jar, хотя это и необязательно.
  • Аргумент входной-файл(ы) - список с разделителем пробелом из одного или более файлов, которые вы хотите поместить в ваш JAR-файл. Аргумент входной-файл(ы) может содержать также символ джокер *. Если любые из входных файлов являются каталогами, содержимое этих каталогов рекурсивно добавляется в архив JAR.

Правила относительно структуры JAR-файла.

  • Команда jar автоматически создаст META-INF каталог.
  • Команда jar автоматически создаст MANIFEST.MF и поместит его в META-INF каталог.
  • Сохраняется точная структура каталогов.
  • Команды java и javac могут использовать JAR-файл как нормальное дерево каталогов.
  • Поиск JAR-файлов с помощью ключа -cp аналогичен поиску пакетных файлов. Единственная разница - путь к JAR-файлу должен содержать имя JAR-файла (например classes/project1.jar).

Рассмотрим на примере как создаются и используются JAR файлы.

Допустим, что наше приложение имеет следующую структуру каталогов:

Создадим JAR-файл project1.jar, который будет содержать пакеты first и second:

cd project1/classes
 jar –cf project1.jar first second

Можем просмотреть содержимое project1.jar файла с помощью следующей команды:

jar -tf project1.jar

Результат выполнения будет приблизительно такой:

META-INF/
 META-INF/MANIFEST.MF
 first/
 first/Example1.class
 second/
 second/Example2.class

 Перенесем созданный project1.jar файл в каталог lib и запустим на выполнение программу first.Example:

cd lib
 java -cp project1.jar first.Example1

Сборка jar и exe для JavaFX в IntelliJ

Для данных действий не требуется ничего кроме IDE IntelliJ и jdk с javaFX!
Никаких плагинов и т.д.

В статье описан не единственный способ сборки!

Сборка

  1. Пишем рабочий проект (который нормально компилируется)
  2. Проверяем все пути к файлам fxml и меняем с ../fxml/ на /fxml/
  3. File — Project Structure.
  4. Выбираем вкладку Artifacts
  5. Для добавления нового артефакта жмем зеленый плюс +
  6. В выпадающем списке выбираем JavaFX Application
  7. В правой части окна переходим на вкладку JavaFX
  8. Заполняем поля:
    1. Application Class: выбираем класс с методом main
    2. Native bundle: выбираем all (это важно!)
  9. Для сборки одновременно с компиляцией: в верхней части этого окна ставим галочку Build on make
  10. Задаем Output directory

Всё!

Теперь при компиляции (см п. 9) приложения в папке указанной в Output directory создастся помимо прочего пака bundles, в которой будет лежать nameProjects.exe файл и папка с именем проекта.

Если п. 9 не выполнен, тогда: Build — Build Artifacts... — В выпадающем меню — build.

Папка с именем проекта — это папка содержащая среду исполнения java и .exe файл с именем проекта. Эту папку можно передавать пользователям. При этом им не нужно иметь установленную java на своих windows.

Возможные проблемы

  • Путь к .exe файлу не должен содержать русских букв.
  • Если хотим чтобы наше творение запускалось на всех windows нужно использовать 32 битный jdk, например, jdk-8u40-windows-i586.exe.
  • Не везде выполнен п. 2
  • В п. 8 поле Title заполнено на русском языке

Создание файла JAR (Руководства по Java ™> Развертывание> Упаковка программ в файлы JAR)

Основной формат команды для создания файла JAR:

 jar cf  jar-файл входной файл (ы)  

В этой команде используются следующие параметры и аргументы:

  • Параметр c указывает, что вы хотите создать файл JAR.
  • Параметр f указывает, что вы хотите, чтобы выходные данные направлялись в файл , а не в стандартный вывод.
  • jar-file - это имя, которое вы хотите, чтобы получившийся JAR-файл имел. Вы можете использовать любое имя файла для файла JAR. По соглашению, имена файлов JAR имеют расширение .jar, хотя это не обязательно.
  • Аргумент input-file (s) - это список одного или нескольких файлов, разделенных пробелами, которые вы хотите включить в свой JAR-файл. Аргумент входного файла (ов) может содержать подстановочный знак *. Если какие-либо из «входных файлов» являются каталогами, содержимое этих каталогов рекурсивно добавляется в архив JAR.

Опции c и f могут появляться в любом порядке, но между ними не должно быть пробелов.

Эта команда сгенерирует сжатый файл JAR и поместит его в текущий каталог. Команда также сгенерирует файл манифеста по умолчанию для архива JAR.


Примечание:

Метаданные в файле JAR, такие как имена записей, комментарии и содержимое манифеста, должны быть закодированы в UTF8.


Вы можете добавить любые из этих дополнительных параметров к параметрам cf базовой команды:

Параметры команды jar
Опция Описание
в Выдает подробный вывод на стандартный вывод, пока создается файл JAR.Подробный вывод сообщает вам имя каждого файла по мере его добавления в файл JAR.
0 (ноль) Указывает, что вы не хотите, чтобы файл JAR был сжат.
M Указывает, что файл манифеста по умолчанию не должен создаваться.
м Используется для включения информации манифеста из существующего файла манифеста. Формат использования этой опции:
 jar cmf  jar-file   существующий-манифест   входной файл (ы)  
Увидеть Изменение файла манифеста для получения дополнительной информации об этой опции.


Предупреждение: Манифест должен заканчиваться новой строкой или символом возврата каретки. Последняя строка не будет проанализирована должным образом, если она не заканчивается новой строкой или возвратом каретки.

-C Для смены директорий во время выполнения команды. См. Пример ниже.

Примечание:

Когда вы создаете файл JAR, время создания сохраняется в файле JAR. Следовательно, даже если содержимое файла JAR не изменится, когда вы создаете файл JAR несколько раз, полученные файлы не будут полностью идентичны.Вы должны знать об этом, когда используете файлы JAR в среде сборки. Для управления версиями файла JAR рекомендуется использовать информацию о версиях в файле манифеста, а не время создания. Увидеть Раздел «Настройка информации о версии пакета».


Пример

Давайте посмотрим на пример. Простой апплет TicTacToe. Вы можете увидеть исходный код этого апплета, загрузив пакет JDK Demos and Samples с Загрузки Java SE. Эта демонстрация содержит файлы классов, аудиофайлы и изображения, имеющие такую ​​структуру:

Иерархия папок TicTacToe

Подкаталоги audio и images содержат звуковые файлы и изображения GIF, используемые апплетом.

Вы можете получить все эти файлы из каталога jar / examples , когда загрузите весь учебник онлайн. Чтобы упаковать эту демонстрацию в один файл JAR с именем TicTacToe.jar, вы должны запустить эту команду из каталога TicTacToe:

 jar cvf TicTacToe.jar TicTacToe.class аудио изображения 

Аргументы аудио и изображений представляют каталоги, поэтому инструмент Jar рекурсивно поместит их и их содержимое в файл JAR. Сгенерированный JAR-файл TicTacToe.jar будет помещен в текущий каталог. Поскольку команда использовала параметр v для подробного вывода, вы увидите что-то похожее на этот вывод при запуске команды:

 добавление: TicTacToe.class (in = 3825) (out = 2222) (спущено 41%) добавление: audio / (in = 0) (out = 0) (сохранено 0%) добавление: audio / beep.au (in = 4032) (out = 3572) (спущено на 11%) добавление: audio / ding.au (in = 2566) (out = 2055) (спущено на 19%) добавление: audio / return.au (in = 6558) (out = 4401) (спущено 32%) добавление: audio / yahoo1.au (in = 7834) (out = 6985) (спущено на 10%) добавление: audio / yahoo2.au (in = 7463) (out = 4607) (спущено 38%) добавление: images / (in = 0) (out = 0) (сохранено 0%) добавление: images / cross.gif (in = 157) (out = 160) (спущено -1%) добавление: images / not.gif (in = 158) (out = 161) (спущено -1%) 

Из этого вывода видно, что файл JAR TicTacToe.jar сжат. Инструмент Jar по умолчанию сжимает файлы. Вы можете отключить функцию сжатия, используя параметр 0 (ноль), чтобы команда выглядела так:

 jar cvf0 TicTacToe.jar Звуковые изображения TicTacToe.class 

Возможно, вы захотите избежать сжатия, например, чтобы увеличить скорость, с которой файл JAR может быть загружен браузером.Несжатые файлы JAR обычно загружаются быстрее, чем сжатые файлы, поскольку отпадает необходимость распаковывать файлы во время загрузки. Однако есть компромисс в том, что время загрузки по сети может быть больше для больших несжатых файлов.

Инструмент Jar принимает аргументы, в которых используется подстановочный знак *. Если в каталоге TicTacToe не было никаких нежелательных файлов, вы могли использовать эту альтернативную команду для создания файла JAR:

Хотя подробный вывод этого не указывает, инструмент Jar автоматически добавляет файл манифеста в архив JAR с именем пути META-INF / MANIFEST.MF. Увидеть Работа с файлами манифеста: раздел Основы для получения информации о файлах манифеста.

В приведенном выше примере файлы в архиве сохранили свои относительные имена путей и структуру каталогов. Инструмент Jar предоставляет параметр -C, который можно использовать для создания файла JAR, в котором относительные пути к заархивированным файлам не сохраняются. Он создан по образцу опции -C в TAR.

В качестве примера предположим, что вы хотите поместить аудиофайлы и изображения в формате gif, используемые демонстрацией TicTacToe, в файл JAR, и что вы хотите, чтобы все файлы находились на верхнем уровне, без иерархии каталогов.Вы можете сделать это, выполнив эту команду из родительского каталога изображений и аудио каталогов:

 jar cf ImageAudio.jar -C images. -С аудио. 

Часть этой команды -C images указывает инструменту Jar перейти в каталог изображений, а файл. следующий -C images указывает инструменту Jar архивировать все содержимое этого каталога. -C audio. часть команды затем делает то же самое с аудио каталогом. Результирующий JAR-файл будет иметь следующее содержание:

 МЕТА-ИНФ / МАНИФЕСТ.MF cross.gif not.gif beep.au ding.au return.au yahoo1.au yahoo2.au 

Напротив, предположим, что вы использовали команду, в которой не использовалась опция -C:

 jar cf ImageAudio.jar изображения аудио 

Результирующий файл JAR будет иметь следующее содержание:

 МЕТА-ИНФ / МАНИФЕСТ.MF images / cross.gif images / not.gif audio / beep.au audio / ding.au audio / return.au audio / yahoo1.au audio / yahoo2.au 
.

java - как создать файл jar?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
.

Как создать JAR из классов Java

Файлы архива Java (JAR) позволяют объединить несколько файлов в один архив. Обычно файлы jar содержат файлы классов и некоторые другие файлы, такие как файлы свойств, изображения, апплеты и т. Д.

Мы все использовали файлы jar в проектах, даже классы JRE упакованы как jar (rt.jar или classes.jar).

Мы можем создать jar файл из любого файла, он похож на zip файл.

Здесь мы узнаем, как создать файл jar из проекта java.В моем Java-проекте (MyProject) есть два пакета и два класса. Структура проекта выглядит как на картинке ниже.

  1. Скомпилируйте классы Java. Этот шаг не является обязательным, если классы уже скомпилированы и находятся внутри целевого каталога.
      pankaj @ JD: ~ / CODE / MyProject / src $ javac com / journaldev / util / *. java com / journaldev / test / *. java -d ../bin/ -verbose [начат анализ com / journaldev / util / MyUtil.java] [разбор завершен 46 мс] [начат разбор com / journaldev / test / MyTest.Ява] [разбор завершен 0 мс] [путь поиска исходных файлов:.] [путь поиска файлов классов: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes .jar, / System / Library / Frameworks / JavaVM.framework / Frameworks / JavaRuntimeSupport.framework / Resources / Java / JavaRuntimeSupport.jar, / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Classes / ui.jar , / Система / Библиотека / Java / JavaVirtualMachines / 1.6.0.jdk / Содержание / Классы / laf.jar, / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Classes / sunrsasign.jar, / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Classes / jsse.jar, / System /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar,/System/Library/Java /Extensions/AppleScriptEngine.jar,/System/Library/Java/Extensions/dns_sd.jar,/System/Library/Java/Extensions/j3daudio.jar,/System/Library/Java/Extensions/j3dcore.jar, / System / Library / Java / Extensions / j3dutils.jar, / System / Library / Java / Extensions / jai_codec.jar, / System / Library / Java / Extensions / jai_core.jar, / System / Library / Java / Extensions / mlibwrapper_jai.jar, / System / Library / Java / Extensions / MRJToolkit.jar, / System / Library / Java / Extensions / QTJava.zip, / System / Library / Java / Extensions / vecmath.jar, / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home / lib / ext / apple_provider.jar, / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home / lib / ext / dnsns.jar, / System / Библиотека / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home / lib / ext / localedata.jar, / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home / lib / ext / sunjce_provider.jar, / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home / lib / ext / sunpkcs11.jar ,.] [загрузка java / lang / Object.class (java / lang: Object.class)] [загрузка java / lang / String.class (java / lang: String.class)] [проверка com.journaldev.util.MyUtil] [загрузка java / lang / System.class (java / lang: System.class)] [загрузка java / io / PrintStream.class (java / io: PrintStream.class)] [загрузка java / io / FilterOutputStream.класс (java / io: FilterOutputStream.class)] [загрузка java / io / OutputStream.class (java / io: OutputStream.class)] [написал ../bin/com/journaldev/util/MyUtil.class] [проверка com.journaldev.test.MyTest] [написал ../bin/com/journaldev/test/MyTest.class] [всего 422 мс]  

    Обратите внимание, что я компилирую оба класса пакетов в каталоге bin . подробный параметр добавлен только для целей отладки.

  2. Использование команды jar для создания архива jar.
      pankaj @ JD: ~ / CODE / MyProject / src $ cd ../bin pankaj @ JD: ~ / CODE / MyProject / bin $ jar cvf MyProject.jar * добавлен манифест добавление: com / (in = 0) (out = 0) (сохранено 0%) добавление: com / journaldev / (in = 0) (out = 0) (сохранено 0%) добавление: com / journaldev / test / (in = 0) (out = 0) (сохранено 0%) добавление: com / journaldev / test / MyTest.class (in = 444) (out = 303) (спущено на 31%) добавление: com / journaldev / util / (in = 0) (out = 0) (сохранено 0%) добавление: com / journaldev / util / MyUtil.class (in = 444) (out = 304) (спущено 31%)  

    Опция c указывает, что мы хотим создать файл jar.Опция v запускает команду jar с подробным описанием, которая печатает все файлы, включенные в архив jar, и детали сжатия. Опция f позволяет нам отправлять вывод в заданное имя файла.

Обратите внимание, что команда jar автоматически добавляет файл манифеста в jar. Файл манифеста содержит метаданные файла jar и хранится в файле META-INF / MANIFEST.MF .

Мы можем добавить наш собственный файл манифеста с помощью команды jar cvmf MANIFEST.MF MyProject.jar com .

jar команда сопоставляет входные параметры с именем опции. Поскольку мы используем опцию cvmf , нам нужно сначала указать имя файла манифеста, а затем имя файла jar.

Ваш jar-файл готов, и вы можете использовать его в любых других проектах.

.

Основы (Учебники Java ™> Развертывание> Упаковка программ в файлы JAR)

Учебники Java были написаны для JDK 8. Примеры и методы, описанные на этой странице, не используют преимущества улучшений, представленных в более поздних выпусках, и могут использовать технологии, которые больше не доступны.
Обзор обновленных языковых функций в Java SE 9 и последующих выпусках см. В разделе «Изменения языка Java».
См. Примечания к выпуску JDK для получения информации о новых функциях, улучшениях, а также удаленных или устаревших параметрах для всех выпусков JDK.

Файлы

JAR упакованы в формат файла ZIP, поэтому вы можете использовать их для таких задач, как сжатие данных без потерь, архивирование, распаковка и распаковка архивов. Эти задачи являются одними из наиболее распространенных применений файлов JAR, и вы можете реализовать многие преимущества файла JAR, используя только эти основные функции.

Даже если вы хотите воспользоваться преимуществами расширенных функций, предоставляемых форматом файлов JAR, таких как электронная подпись, вам сначала необходимо ознакомиться с основными операциями.

Для выполнения основных задач с файлами JAR вы используете инструмент Java Archive Tool, входящий в состав Java Development Kit (JDK). Поскольку инструмент Java Archive вызывается с помощью команды jar, в этом руководстве он называется «инструментом Jar».

В качестве краткого обзора и предварительного просмотра некоторых тем, которые будут рассмотрены в этом разделе, следующая таблица суммирует общие операции с файлами JAR:

Общие операции с файлами JAR
Эксплуатация Команда
Для создания файла JAR jar cf файл (ы) ввода jar
Для просмотра содержимого файла JAR jar tf jar-файл
Чтобы извлечь содержимое файла JAR jar xf jar-файл
Для извлечения определенных файлов из файла JAR jar xf jar-файл заархивированный файл (ы)
Для запуска приложения, упакованного как файл JAR (требуется заголовок манифеста основного класса) java -jar приложение.банка
Для вызова апплета, упакованного как файл JAR
 <код апплета =  AppletClassName.class  archive = " JarFileName.jar " ширина =  ширина  высота =  высота >  

В этом разделе показано, как выполнять наиболее распространенные операции с файлом JAR, с примерами для каждой из основных функций:

В этом разделе показано, как использовать инструмент Jar для упаковки файлов и каталогов в файл JAR.

Вы можете отобразить оглавление JAR-файла, чтобы увидеть, что он содержит, без фактической распаковки JAR-файла.

Вы можете использовать инструмент Jar для распаковки файла JAR. При извлечении файлов инструмент Jar делает копии нужных файлов и записывает их в текущий каталог, воспроизводя структуру каталогов, которая есть у файлов в архиве.

В этом разделе показано, как обновить содержимое существующего файла JAR путем изменения его манифеста или добавления файлов.

В этом разделе показано, как вызывать и запускать апплеты и приложения, упакованные в файлы JAR.

Дополнительные ссылки

Документация для JDK включает справочные страницы для инструмента Jar:

.

java - Как запустить файл JAR

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

java - Как я могу создать файл класса и файл JAR без основной функции?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

Смотрите также