Как я могу создать файл .jar? - PullRequest
2 голосов
/ 07 апреля 2010

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

jar cf jar-file input-file(s)

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

Но теперь неясно, какие файлы .class я должен поместить туда. После компиляции файлов .java у меня много файлов .class. Одна из причин этого заключается в том, что у меня много таких файлов: GameWindow $ 2 $ 10class, GameWindow $ 2 $ 7.class и так далее. Должен ли я включить их все в командную строку для создания файла .jar?

Для запуска моего приложения я использую java Game. Итак, мне нужно использовать только файл Game.class при создании файла .jar? С другой стороны, другие файлы классов соответствуют классам, используемым приложением.

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

Ответы [ 6 ]

4 голосов
/ 07 апреля 2010

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

Да, вам нужно включить файлы классов.

У меня много файловвот так: GameWindow $ 2 $ 10class, GameWindow $ 2 $ 7.class и так далее.Должен ли я включить их все в командную строку для создания файла .jar?

Да, это из внутренних классов;они вам тоже нужны.

Для запуска моего приложения я использую Java-игру.Итак, мне нужно использовать только файл Game.class при создании файла .jar?

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

Будет ли файл .jar моего приложения работать на компьютере, который не содержит файл .jar используемой библиотеки?

Нет.

Тем не менее, создание JAR вручную - это хороший опыт обучения, но не то, что вы действительно делаете на практике.

Возможно, вам стоит заняться автоматизацией сборки JAR.Проверьте, например, Муравей: http://ant.apache.org/

2 голосов
/ 07 апреля 2010

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

jar cf mynewjar.jar *.class

Когда вы компилируете свой исходный файл в байт-код, все классы внутри этого источника будут сгенерированы как отдельные файлы .class, поэтому, если в вашем файле game.java больше, чем класс Game, класса игры будет достаточно.

1 голос
/ 07 апреля 2010

относительно ваших внешних зависимостей, это НЕ будет работать, если вы не скомпилируете в зависимостях как файлы .class или не используете что-то вроде FatJar http://fjep.sourceforge.net/, чтобы добавить их в один большой jar.

1 голос
/ 07 апреля 2010

Файл .jar должен содержать все ваши классы, которые необходимы во время выполнения. Это включает в себя GameWindow$2$10 классы, это анонимные внутренние классы, которые вы написали в своем GameWindow классе.

Другие файлы .jar не включены в ваш файл .jar, но вы можете ссылаться на них, используя атрибут Class-path в манифесте.

1 голос
/ 07 апреля 2010

Jar-файл может содержать любой файл, который вы хотите, но для хранения Java-программы вам нужны как минимум .class-файлы, поэтому вы должны включить их. Класс игры, о котором вы говорите, может зависеть от других классов. Вы можете проверить это: удалите все .class-файлы и перекомпилируйте только Game.java (javac Game.java). Все остальные скомпилированные классы являются зависимостями. Все это должно быть включено в Jar-файл, чтобы ваша программа могла быть запущена. Сгенерированные файлы классов, которые не имеют соответствующего файла .java (т. Е. Ваш GameWindow $ 2 $ 7.class), являются внутренними анонимными классами, в вашем примере внутренним классом класса GameWindow. Если нужны другие библиотеки, они должны присутствовать на других компьютерах, чтобы ваша программа могла быть запущена. Но вы можете включить содержимое других jar-файлов в ваш jar-файл, чтобы все необходимое было объединено в один файл.

0 голосов
/ 15 июня 2016

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

Например, если ваши файлы классов находятся в папке "game", заархивируйте их в игру.zip и переименуйте его в game.jar

Это действительно просто и работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...