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

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

3gp       avi       fb2       jpg       mp3       pdf      

Как создать jar файл в командной строке


Создание файла JAR и использование в командной строке? - java

Хорошо, поэтому я уже следовал учебнику Java для создания JAR файла и даже создавал Manifest.txt, который вместе с ним. Я очень смущен, и я дошел до того, что я запускал JAR в командной строке, но не имел в виду другой класс, который я использовал в своей основной программе.

У меня есть два файла.class, которые я использую, javagame.class и sound.class.

Это, наконец, загрузка основного класса, но когда нужно было ссылаться на файл sound.class он говорил, что он не существует, NoClassDefFoundError

Я сделал "jar cfm myjar.jar Manifest.txt javagame.class sound.class" в командной строке cmd

jar cfe app.jar javagame javagame.class 


Наконец, я сделал java -jar app.jar для запуска JAR, и я получил ошибку выше, где он не смог найти файл sound.class.

Кто-нибудь, пожалуйста, помогите, я очень смущен.

Java: создание Jar руками | ruX's mind

Бывают и такие ситуации, когда требуется скомпилить небольшое количество файлов в jar, например после небольшой правки кода, в консоли, и без IDE.

Всё довольно просто, достаточно разбить по шагам.

  • Скормить javac все исходники, прямо одной командой кучу файлов
  • Необходимо создать текстовый файл manifest в корне проекта(на уровне с src), в котором указать класс, который будет загружен(такого вида строчка Main-Class: practice.Main). Если не указать этот класс, то появится ошибка, навроде Failed to load Main-Class manifest attribute from
  • Запаковать все с помощью jar
  • По необходимости запустить командой java -jar file.jar

Хочу пример?


$ javac -encoding utf8 src/pack/Main.java src/pack/Processor.java \
src/pack/beans/Person.java src/pack/utils/ListAF.java
$ cat manifest
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Main-Class: practice.Main
$ jar cvfm pack-dist.jar manifest -C src/ .
$ java -jar pack-dist.jar

Я уверен, что мне эта заметка ещё ни раз пригодится

работа с jar-архивами из консоли Linux

Извлечение объектов из архива

Распаковать архив ojdbc14-10.2.0.4.jar в текущую директорию:

$ jar xf ojdbc14-10.2.0.4.jar

Ключи:

-xextract, распаковать;
-ffile, файл, который необходимо распаковать;

В результате получим содержимое архива:

$ ls -1 META-INF ojdbc14-10.2.0.4.jar oracle

Извлечь только определённый файл или каталог, например — только папку oracle из архива ojdbc14-10.2.0.4.jar:

$ jar xf ojdbc14-10.2.0.4.jar oracle/
$ ls -1 ojdbc14-10.2.0.4.jar oracle

Извлечь только определённый файл:

$ jar xf ojdbc14-10.2.0.4.jar oracle/sql/NUMBER.class
$ ls -1 oracle/sql/ NUMBER.class

Необходимые каталоги (в данном случае oracle/sql) будут созданы автоматически.

Создание jar-архива

Ключи:

-vverbose, будет выводить полную информацию о действиях;
-0zero, не будет сжимать файлы перед добавлением в арихв;
-ffile, направить всё в файл;
-ccreate, создать архив;
-Cchange, сменить каталог на время выполнения операции.

Создадим простой архив oracle.jar в который заархивируем содержимое каталога oracle:

$ jar cf oracle.jar oracle/
$ ls -1 oracle oracle.jar

То же, но в подробном режиме:

$ jar cfv oracle.jar oracle/ [...] adding: oracle/jpub/(in = 0) (out= 0)(stored 0%) adding: oracle/jpub/runtime/(in = 0) (out= 0)(stored 0%) adding: oracle/jpub/runtime/MutableStruct.class(in = 5064) (out= 2242)(deflated 55%) [...]

Видно, что файлы сжимаются. Избежим этого, добавим -0:

$ jar cfv0 oracle.jar oracle/ [...] adding: oracle/jpub/(in = 0) (out= 0)(stored 0%) adding: oracle/jpub/runtime/(in = 0) (out= 0)(stored 0%) adding: oracle/jpub/runtime/MutableStruct.class(in = 5064) (out= 5064)(stored 0%) [...]

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

$ mkdir or $ touch or/file.d $ jar cf or.jar -C or .

Проверим содержимое:

$ jar vtf or.jar | grep file.d 0 Tue Nov 26 18:45:52 EET 2013 file.d

Файл file.d находится в корне архива, т.к. перед выполнением добавления его в архив — архиватор сменил текущую директорию на or.

Просмотр содержимого jar-архива

-ffile, файл архива;
-ttable, список содержимого;
-vverbose, более полная инфомрация.

Пример:

$ jar tf oracle.jar | grep "jpub/runtime" oracle/jpub/runtime/ oracle/jpub/runtime/MutableStruct.class oracle/jpub/runtime/Util.class oracle/jpub/runtime/MutableArray.class

И с опцией -v:

$ jar tfv oracle.jar | grep "jpub/runtime" 0 Sat Feb 02 11:40:08 EET 2008 oracle/jpub/runtime/ 5064 Sat Feb 02 11:40:08 EET 2008 oracle/jpub/runtime/MutableStruct.class 4997 Sat Feb 02 11:40:06 EET 2008 oracle/jpub/runtime/Util.class 12315 Sat Feb 02 11:40:06 EET 2008 oracle/jpub/runtime/MutableArray.class

Добавление объектов в jar-архив

-uupdate, обнвоить содержимое архива.

Создадим файл:

$ touch file.f

И добавим его в имеющийся архив oracle.jar:

$ jar uf oracle.jar file.f

Проверим:

$ jar tvf oracle.jar | grep "file.f" 0 Tue Nov 26 18:40:26 EET 2013 file.f

При обновлении архива — так же можно использовать опцию -C (change).

Дополнение

Простой способ найти файл, который находится в каком-то jar-архиве, но вы не знаете в каком именно:

$ find . -name "*.jar" | xargs grep "NUMBER.class" Binary file ./ojdbc14-10.2.0.4.jar matches

Работа с файлами 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

Компиляция java из командной строки(через cmd)

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

Java Source и каталоги классов

Простой Java-проект содержит один каталог, внутри которого хранятся все исходные файлы. Файлы обычно хранятся не внутри исходного каталога, а в подкаталогах, соответствующих их структуре пакета. Пакеты — это просто способ сгруппировать исходные файлы, которые принадлежат друг другу. Исходный каталог часто называют src, но это не является обязательным требованием.

Например, если вы используете инструмент сборки Maven, вы, как правило, будете использовать другую структуру каталогов, где исходный код Java хранится в каталоге src/main/java(в корневом каталоге вашего проекта).

Когда вы компилируете весь исходный код в Java, компилятор создает один файл .class для каждого файла .java. .Class содержит скомпилированную версию файла .java. Байт-код для файла .java, другими словами.

Это файлы .class, которые может выполнять виртуальная машина. Не файлы .java. Поэтому нормально отделять файлы .java от файлов .class. Обычно это делается путем указания компилятору записать файлы .class в отдельный каталог.

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

Компиляция исходного кода Java

Вы можете скомпилировать исходный код Java непосредственно из вашей IDE(если вы используете IDE). Или вы можете использовать компилятор, который поставляется вместе с Java SDK. Чтобы выполнить компиляцию java кода из командной строки, сделайте следующее:

  • Откройте командную строку (cmd)
  • Перейдите в корневой каталог вашего проекта(не в исходный каталог)
  • Убедитесь, что корневой каталог проекта содержит исходный каталог и каталог классов
  • Введите команду ниже(в Windows — другие ОС будут выглядеть аналогично):
"c:\Program Files\Java\jdk1.8.0_25\bin\javac" src/myfirstapp/*.java -d classes
 

Эта команда выполняет javac(компилятор), которая скомпилирует код в каталоге src / myfirstapp. * . А даже точнее все файлы в данном каталоге.

Каталог myfirstapp — это пакет в корневом каталоге исходного кода src. Если у вас есть несколько пакетов в корневом каталоге, вам придется запускать компилятор несколько раз. Java IDE обрабатывает это автоматически. Так же как и инструменты для сборки, такие как Ant, Maven или Gradle.

Выполнение скомпилированного кода

После того, как компилятор выполнит свою работу, каталог classes будет содержать скомпилированные файлы .class. Структура пакета(структура каталогов) из исходного каталога будет сохранена в каталоге классов.

Вы можете запустить любой из этих файлов .class, в котором есть метод main(). Вы можете запустить .class изнутри вашей Java IDE или из командной строки. Запуск из командной строки это выглядит так:

 "c:\Program Files\Java\jdk1.8.0_25\bin\java" -cp classes myfirstapp.MyJavaApp
 

Флаг -cp сообщает виртуальной машине, что все ваши классы находятся в каталоге, называемом классы. Это также называется «путь к классу»(отсюда сокращение cp).

Имя класса для запуска является последним аргументом в приведенной выше команде — часть myfirstapp.MyJavaApp. JVM должна знать полное имя класса(все пакеты плюс имя класса), чтобы определить, где находится соответствующий файл .class.

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

D:\data\projects\my-first-java-app>"c:\Program Files\Java\jdk1.8.0_25\bin\java"
 -cp classes myfirstapp.MyJavaApp
 Hello World!
 
 D:\data\projects\my-first-java-app>
 

Обратите внимание, что в первой команде не должно быть разрыва строки. Я добавил это только для того, чтобы было легче читать.

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

Video

Для удобства распространения приложения, в 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 (Руководства по 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) (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 
.

Как создать исполняемый файл .jar с помощью команд Linux и без ярлыка Eclipse? • Crunchify

root @ localhost: ~ / java / src # apt install openjdk-11-jdk-headless

Чтение списков пакетов ... Готово

Построение дерева зависимостей

Чтение информации о состоянии ... Готово

Предлагаемые пакеты :

openjdk-11-demo openjdk-11-source

Будут установлены следующие НОВЫЕ пакеты:

openjdk-11-jdk-headless

0 обновлено, 1 вновь установлено, 0 для удаления и 92 не обновлено.

Требуется 217 МБ архивов.

После этой операции будет использовано 228 МБ дополнительного дискового пространства.

Получить: 1 http://mirrors.linode.com/ubuntu cosmic-updates / main amd64 openjdk-11-jdk-headless amd64 11.0.1 + 13-3ubuntu3.18.10.1 [217 МБ]

Получено 217 МБ за 3 с (70,3 МБ / с)

Выбор ранее невыбранного пакета openjdk-11-jdk-headless: amd64.

(Чтение базы данных ... Установлено 107409 файлов и каталогов.)

Подготовка к распаковке ... / openjdk-11-jdk-headless_11.0.1 + 13-3ubuntu3.18.10.1_amd64.deb ...

Распаковка openjdk-11-jdk-headless: amd64 (11.0.1 + 13 -3ubuntu3.18.10.1) ...

Настройка openjdk-11-jdk-headless: amd64 (11.0.1 + 13-3ubuntu3.18.10.1) ...

альтернативных обновлений: с использованием / usr / lib / jvm / java-11-openjdk-amd64 / bin / jar для предоставления / usr / bin / jar (jar) в автоматическом режиме

альтернативных обновлений: с использованием / usr / lib / jvm / java-11-openjdk-amd64 / bin / jarsigner для предоставления / usr / bin / jarsigner (jarsigner) в автоматическом режиме

альтернативных обновлений: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac для предоставления / usr / bin / javac (javac) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / javadoc для предоставления / usr / bin / javadoc (javadoc) в автоматическом режиме

альтернативных обновлений : использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / javap для предоставления / usr / bin / javap (javap) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jv m / java-11-openjdk-amd64 / bin / jcmd для предоставления / usr / bin / jcmd (jcmd) в автоматическом режиме

альтернативных обновлений: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jdb для предоставления / usr / bin / jdb (jdb) в автоматическом режиме

альтернативных обновлений: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jdeprscan для предоставления / usr / bin / jdeprscan ( jdeprscan) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jdeps для предоставления / usr / bin / jdeps (jdeps) в автоматическом режиме

альтернативных обновлений: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jimage для предоставления / usr / bin / jimage (jimage) в автоматическом режиме

альтернативных обновлений: использование / usr / lib / jvm / java-11 -openjdk-amd64 / bin / jinfo для предоставления / usr / bin / jinfo (jinfo) в автоматическом режиме

-альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jlink для предоставления / usr / bin / jlink (jlink) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jmap для предоставления / usr / bin / jmap (jmap) в au в режим

Альтернативы обновления

: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jmod для предоставления / usr / bin / jmod (jmod) в автоматическом режиме

Альтернативы обновления

: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jps для предоставления / usr / bin / jps (jps) в автоматическом режиме

альтернативных обновлений: использование / usr / lib / jvm / java-11-openjdk- amd64 / bin / jrunscript для предоставления / usr / bin / jrunscript (jrunscript) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jshell для предоставления / usr / bin / jshell (jshell) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jstack для предоставления / usr / bin / jstack (jstack) в автоматическом режиме

обновление -альтернативы: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jstat для предоставления / usr / bin / jstat (jstat) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jstatd для предоставления / usr / bin / jstatd (jstatd) в автоматическом режиме

альтернативных обновлений: с использованием / usr / lib / jvm / java-11-openjdk-amd64 / bin / rmic для предоставления / usr / bin / rmic (rmic) в автоматическом режиме

альтернативных обновлений: с использованием / usr / lib / jvm / java-11-openjdk-amd64 / bin / serialver для предоставления / usr / bin / serialver (serialver) в автоматическом режиме

альтернативных обновлений: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jaotc для предоставления / usr / bin / jaotc (jaotc) в автоматическом режиме

альтернативы обновления: использование / usr / lib / jvm / java-11-openjdk-amd64 / bin / jhsdb для предоставления / usr / bin / jhsdb (jhsdb) в автоматическом режиме

.

java - как мне создать .jar для запуска приложения командной строки

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

java - как создать файл jar из командной строки в ubuntu

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

java - как создать исполняемый файл jar из командной строки, аналогичный eclipse

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

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

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

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