JavaRush /Java блог /JavaRush /Конвертируем JAR в исполняемый (.exe) файл
Zheleznyak Maxim
47 уровень
Moscow

Конвертируем JAR в исполняемый (.exe) файл

Статья из группы JavaRush
Кратчайшая инструкция. Пишем простейшее тестовое приложение, допустим "Hi Amigo!" в файл HiAmigo.txt 100 раз.

public class Main {
    public static void main(String[] args) throws IOException {

        File file = new File("C:\\temp\\HiAmigo.txt");
        FileWriter fileWriter = new FileWriter(file);

        for (int i = 0; i < 100 ; i++) {
            fileWriter.write("Hi Amigo! \n");
        }
        fileWriter.close();
      }
}
Проверяем что все работает на этом этапе (это важно!) Конвертируем JAR в исполняемый (.exe) файл - 1 Идем File -> Project Structure -> Artifacts -> + JAR -> From Modules with dependencies.. Конвертируем JAR в исполняемый (.exe) файл - 2 Указываем путь к нашему Main.class: Конвертируем JAR в исполняемый (.exe) файл - 3 Жмем ОК Жмем Build Artifacts - > Action -> Build Конвертируем JAR в исполняемый (.exe) файл - 4 Появляется наш артефакт: Конвертируем JAR в исполняемый (.exe) файл - 5 Удаляем наш тестовый файл "C:\\temp\\HiAmigo.txt" и запускаем JAR. Файл должен появиться еще раз. Если появился - все ок. Едем дальше. Качаем тулзу с сайта https://launch4j.sourceforge.net/ (Рекомендую версию 3.14, потом объясню почему). Устанавниваем запускаем. Нам нужно два поля. Указываем наш JAR и куда класть готовый .exe Конвертируем JAR в исполняемый (.exe) файл - 6 Сейчас самое интересное. Представьте ситуацию что на машине где мы планируем использовать наше приложение не установлена JRE и нет возможности ее установить. Такое часто бывает по соображениям безопасности. К тому же хорошо бы обеспечить наше приложение более высоким уровнем автономности. Делаем следующее. Создаем отдельный каталог для нашего приложения, пусть OurApp. Внутри создаем папку JRE. Качаем JRE (в моем примере пусть будет jre-8u361-windows-i586) устанавливаем куда нибудь (если это готовый архив разархивируем) и выдергиваем из нее все файлы. Копируем все в \OurApp\JRE\ должно получиться примерно так: Конвертируем JAR в исполняемый (.exe) файл - 7 В Launch4j переходим во вкладку JRE и в поле Bundled JRE paths: указываем имя каталога JRE Конвертируем JAR в исполняемый (.exe) файл - 8 Жмем на шестеренку и выбираем любой файл для сохранения конфигурации типа file.xml Конвертируем JAR в исполняемый (.exe) файл - 9 После нажатия на save появится наш exe. Конвертируем JAR в исполняемый (.exe) файл - 10 Копируем exe и кладем рядом рядом с папкой JRE Конвертируем JAR в исполняемый (.exe) файл - 11 Удаляем тестовый C:\temp\HiAmigo.txt. Запускаем exe и смотрим как создается новый. Вот и все. Теперь каталог можно OurApp можно архивировать и передавать куда угодно, exe отработает. Важно: Версия JRE в папке должна быть не ниже той на которой билдился артефакт. Проверяйте поле: Конвертируем JAR в исполняемый (.exe) файл - 12 В моем случае возникли проблемы совместимости с x86 платформой и я использовал версию враппера 3.14, так как в ней можно явно указывать тип целевой архитектуры. В общем всем спасибо за внимание. Это была моя первая статья-инструкция, прошу не судить строго. Всем мир!
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
1 февраля 2024
Спасибо огромное! Все получилось.
Илья Бувичев Уровень 13
20 января 2024
Блин, я вот 4 дня с одной штукой разобраться не мог, если бы не ты, я бы сидел дальше. Спасибо большое!
Gleb Zapara Уровень 17
1 декабря 2023
Спасибо огромное, статья отличная, мне она очень помогла!!!
Ra Уровень 51 Student
28 апреля 2023
JDK 16+: портабельная версия mvn compile jpackage --type app-image --main-jar Program.jar --main-class com.example.demo.Main --input ~/IdeaProjects/javafx/demo/target Создаст папку с портабельной прогой, там будет JRE и EXE-файл. Запускать команду НЕ в той же папке, где jar Кроме app-image есть и другие варианты (много)
Justinian Уровень 41 Master
15 февраля 2023
👍 Актуальная для многих статья, сколько вопросов было на эту тему задано на джава раше....
Boris Chuguev Уровень 14
6 февраля 2023
Спасибо большое за статью. Нужно было сделать exe-шник, а вот с частью копирования JRE не разобрался. Swing ведь тоже можно так собрать, правильно?
Эд Кукса Уровень 29
3 февраля 2023
Ну а если это Eclipse, то достаточно File -> Export -> Runnable Jar. Профит👍