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

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

3gp       avi       fb2       jpg       mp3       pdf      

Как сделать jar файл в java


Как создать исполняемый 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-Файлы - 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 и Manifest в Java

Обязательное условие — формат файла JAR

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

Создание файла JAR — дополнительные параметры

Файл JAR создается с помощью инструмента JAR. Общая команда выглядит примерно так:

 jar options jar-file [manifest-file] file1 file2 file3 ...
  • jar-file: имя файла jar, в котором вы хотите использовать инструмент jar.
  • file1, file2, file3: файлы, которые вы хотите добавить в файл jar. manifest-file — это имя файла, который содержит манифест этого jar-файла, указывать манифест-файл в качестве аргумента совершенно необязательно.
  • c : создает новый или пустой архив и добавляет в него файлы. Если какое-либо из указанных имен файлов является каталогами, то программа jar обрабатывает их рекурсивно.
  • C : временно меняет каталог.
  • e: создает точку входа в манифест.
  • f : указывает имя файла JAR в качестве второго аргумента командной строки. Если этот параметр отсутствует, jar запишет результат в стандартный вывод (при создании файла JAR) или прочитает его из стандартного ввода (при извлечении или табулировании файла JAR).
  • я : создает индексный файл.
  • m : добавляет файл манифеста в файл JAR. Манифест — это описание содержимого архива и его происхождения. Каждый архив имеет манифест по умолчанию, но вы можете указать свой собственный, если хотите аутентифицировать содержимое архива.
  • М : Не создает файл манифеста для записей.
  • t: отображение оглавления.
  • u: обновляет существующий файл JAR.
  • v: генерирует подробный вывод.
  • x: извлечь файлы Если вы указываете одно или несколько имен файлов, извлекаются только эти файлы. В противном случае все файлы извлекаются.
  • 0: магазины без сжатия zip.

Параметры команды jar почти аналогичны параметрам команды tar в UNIX. В окнах вы также можете получить справку о различных параметрах команды jar, просто набрав jar в cmd и нажав Enter, результат будет примерно таким:

Пример :

Для создания файла JAR с двумя классами server.class и client.class и Jpeg image logo.jpeg необходимо написать следующую команду:

 jar cvf chat.jar server.class client.class logo.jpeg

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

Лучше использовать опцию -v вместе с командой jar, чтобы узнать, как идут дела.

Файл манифеста

Каждый файл JAR содержит файл манифеста, который описывает функции архива. Каждый JAR-файл имеет файл манифеста по умолчанию. Файл манифеста по умолчанию называется MANIFEST.MF и присутствует в подкаталоге META-INF архива. Хотя файл манифеста по умолчанию содержит только две записи, но у сложных файлов манифеста может быть намного больше. Вот как выглядит файл манифеста по умолчанию:

Записи файлов манифеста сгруппированы в разделы. Каждый раздел имеет две записи имя раздела и его значение. Чуть позже мы увидим, как эти разделы могут реально помочь нам в управлении свойствами нашего архива. Файл манифеста также можно обновить с помощью параметра m команды jar. Но есть некоторые вещи, которые необходимо учитывать при обновлении файла манифеста, иначе вы можете получить следующее жуткое сообщение.

 java.io.IOException: invalid manifest format

Что нужно иметь в виду при работе с файлами манифеста:

  1. Вы должны оставить пробел между именем и значением любого раздела в файле манифеста, например, версия: 1.1 находится в допустимом разделе, вместо этого напишите версию: 1.1, что пробел между двоеточием и 1.1 действительно имеет большое значение.
  2. При указании основного класса не следует добавлять расширение .class в конце имени класса. Просто укажите основной класс, набрав:
    Main-Class: Classname

    (Очень скоро я расскажу о секции Main-Class).

  3. Вы должны добавить новую строку в конце файла. Вам не нужно писать / n для указания новой строки, вместо этого просто оставьте последнюю строку вашего файла манифеста пустой, которая будет служить цели.
  4. Текстовый файл для манифеста должен использовать кодировку UTF-8, иначе вы можете столкнуться с некоторыми проблемами.

Пример:

Теперь вернемся и обновим содержимое нашего архива chat.jar. Чтобы обновить файл манифеста, нам просто нужно написать следующую команду:

 jar uvfm chat.jar manifest.txt

Здесь manifest.txt — это новый файл манифеста, который имеет следующее содержимое:

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

Здесь мы получаем два предупреждения, потому что мы пытаемся перезаписать ранее представленные записи.

Исполняемые файлы Jar

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

Пример:

Чтобы создать файл chat.jar с классом клиента в качестве основного, необходимо написать следующую команду —

 jar cvfe chat.jar client client.class server.class logo.jpeg

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

Не забудьте не добавлять расширение .class после имени класса, который вы хотите установить основным классом.

В качестве альтернативы вы можете добавить запись Main-Class в файл манифеста, а затем обновить ее. Для приведенного выше примера вам просто нужно добавить эту запись:

 Main-Class: client

Когда основной класс установлен, можно просто запустить jar-программу, написав следующую команду:

 java -jar chat.jar

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

Запечатывание пакета

Наконец, мы собираемся обсудить герметизацию пакетов в Java. Мы можем запечатать пакет в Java, чтобы другие классы не могли добавить себя в него. Возможно, вы захотите запечатать пакет, если вы используете в коде видимые классы, методы и поля. Без запечатывания упаковки другие классы могут добавлять себя в ту же упаковку и, таким образом, получать доступ к видимым функциям упаковки.

Это все с моей стороны о том, как работать с файлами JAR. Будьте на связи!!

Эта статья предоставлена Abhey Rana (UselessCoder) . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи [email protected]. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Рекомендуемые посты:

Работа с файлами JAR и Manifest в Java

0.00 (0%) 0 votes

Запуск файла JAR в Windows

интересный побочный эффект этого вызывает проблему при запуске запускаемых файлов jar в командной строке.

Если вы попробуете (в командной строке)

файла jarfile.параметр банку

нет радости, потому что это переводится на следующее (Это не работает):

javaw, который.exe-jar jarfile.параметр банку

однако следующая команда работает:

java.exe-jar файла jarfile.параметр банку

Если вы измените ассоциацию в файловом менеджере, как описано выше, на:

"C:\Program файлы\Java\j2re1.4.2_04\bin\java.exe "- jar "%1"%*

затем вы можете ввести:

файла jarfile.параметр банку

в командной строке, и теперь он будет работать! EDIT: (однако затем вы получаете черное окно консоли при запуске Java-приложения на основе формы (не консоли), поэтому это не идеальный вариант решение)

Если вы запустите эти файлы jar, дважды щелкнув их в windows, никакие параметры не будут переданы, поэтому ваш код Java должен обрабатывать исключение переполнения стека и включать функцию "нажмите клавишу" в конце или окно просто исчезнет.

чтобы передать параметр в windows, вам нужно создать ярлык для файла jar, который включает параметр в целевую строку (щелкните правой кнопкой мыши на ярлыке и выберите Свойства) , вы не можете добавить параметры в сам значок файла jar таким образом.

здесь нет единого согласованного решения, но у вас будет такая же проблема с любым другим консольным приложением.

существует бесплатное приложение для windows под названием "bat to exe", которое вы можете использовать для создания exe-файла из.файл bat с командной строкой apropriate в нем. вы также можете встроить файл jar в exe с помощью этого приложения и очистить его, когда он закончит работу, так что это может быть больше элегантное решение.

запуск Java приложений как exe файлы / Хабр

Сегодня я расскажу, как запускать java приложения в виде exe файлов.
Как известно java приложения поставляются в виде jar файлов, которые не являются исполняемыми файлами, а представляют собой специальные файлы с набором инструкций для виртуальной Java машины.
Но не об этом речь. В первую очерь зачем это нужно. Я столкнулся с этой необходимостью, когда использовал любимый редактор jEdit. Захотелось связать php файлы c данным редактором, однако связать с jar файлом не представляется возможным. Также необходимость возникает, когда нужно привязать какую-либо программу с контекстным меню или, например, вызывать редактор как стандартный редактор в браузере.

Решение:

  1. Качаем программу Janel
  2. Распаковываем JanelWindows.exe, JanelWindows.lap, msvcr71.dll в C:\Program Files\Janel\
  3. Переименовываем
    JanelWindows.exe в ИМЯ_ВАШЕГО_ПРИЛОЖЕНИЯ.exe,
    JanelWindows.lap в ИМЯ_ВАШЕГО_ПРИЛОЖЕНИЯ.lap
  4. Редактируем lap файл:
    • в -Djava.class.path прописываем путь к jar файлу
    • в janel.main.class название основного класса
    • в janel.main.argument агрумент вызова

    На примере jEdit:
    -Djava.class.path=C:\Program Files (x86)\jEdit\jedit.jar
    janel.main.class=org.gjt.sp.jedit.jEdit
    janel.main.argument=-reuseview

  5. готово, в качестве exe файла используем ИМЯ_ВАШЕГО_ПРИЛОЖЕНИЯ.exe

Если необходимо привязать несколько exe приложений, просто скопируйте JanelWindows.exe и JanelWindows.lap, и настройте отдельно.

Создание файла 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-файл   существующий-манифест   входной файл (ы)  
Увидеть Изменение файла манифеста для получения дополнительной информации об этой опции.


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

-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) (deflated -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. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

Основы (Учебники 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. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

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

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

Основная команда для извлечения содержимого файла JAR:

 jar xf  jar-файл [архивные файлы]  

Давайте посмотрим на параметры и аргументы в этой команде:

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

Как обычно, порядок, в котором параметры x и f появляются в команде, не имеет значения, но между ними не должно быть пробелов.

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


Внимание: При извлечении файлов инструмент Jar перезапишет все существующие файлы, имеющие тот же путь, что и извлеченные файлы.

Пример

Давайте извлечем несколько файлов из файла TicTacToe JAR, который мы использовали в предыдущих разделах. Напомним, что содержимое TicTacToe.jar:

 МЕТА-ИНФ / МАНИФЕСТ.MF TicTacToe.class TicTacToe.class TicTacToe.java аудио / audio / beep.au аудио / динь.au audio / return.au audio / yahoo1.au audio / yahoo2.au example1.html изображений/ images / cross.gif images / not.gif 

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

 jar xf TicTacToe.jar TicTacToe.class images / cross.gif 

Эта команда выполняет две функции:

  • Помещает копию TicTacToe.class в текущий каталог.
  • Создает каталог изображений, если он еще не существует, и помещает копию креста.gif внутри него.

Исходный файл JAR TicTacToe остается без изменений.

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

.

java - как создать файл .jar в Eclipse MARS

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

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