Зачем конвертировать CLASS в JAR?
Разрозненные файлы .class неудобно распространять или запускать. JAR объединяет все в один файл и, при наличии записи в манифесте, позволяет пользователям запускать приложение с помощью java -jar вместо управления путями классов и отдельными файлами классов.
Способы конвертации CLASS в JAR
jar (JDK) FREE
Перейдите в каталог с вашими файлами .class и выполните jar cfe app.jar com.example.MainClass *.class, чтобы создать исполняемый JAR. Опустите флаг e и аргумент main-class, чтобы создать библиотечный JAR.
IntelliJ IDEA Community FREE
Перейдите в File > Project Structure > Artifacts, добавьте JAR из модулей с зависимостями, установите главный класс и запустите Build > Build Artifacts.
Eclipse IDE FREE
Нажмите правой кнопкой мыши на проект, выберите Export > Java > Runnable JAR file, выберите конфигурацию запуска, укажите путь вывода и нажмите Finish.
Об этих форматах
Файл CLASS представляет собой скомпилированный байт-код Java - результат работы javac из исходного файла .java. Чтобы запустить его, вам необходимо установить Java (JDK), а затем…
Открыть детали .CLASS →Файл JAR - это Java Archive, ZIP-архив, содержащий скомпилированный байт-код Java (файлы .class), ресурсы и манифест. Чтобы запустить исполняемый JAR, необходимо установить Java…
Открыть детали .JAR →Качество и на что обратить внимание
- JAR - это ZIP-архив; переименуйте его в
.zip, чтобы просмотреть содержимое в любом архиваторе. ФайлMETA-INF/MANIFEST.MFуправляет тем, как Java обрабатывает его. - Без атрибута
Main-Classв манифесте командаjava -jar app.jarне сработает - используйтеjar cfe(а неjar cf), чтобы задать точку входа. - Байт-код не меняется; упаковка в JAR - это чисто архивация, которая не изменяет файлы
.class.
Часто задаваемые вопросы
Нужен ли мне JRE или JDK для создания JAR?
jar поставляется вместе с JDK, а не с JRE.Как проверить, что находится внутри существующего JAR?
jar tf app.jar в терминале или переименуйте .jar в .zip и откройте его в любом архиваторе.Можно ли добавить файлы ресурсов (изображения, конфиги) в JAR?
.class в команде jar или используйте сборщик артефактов в вашей IDE, чтобы включить их.