Кратчайшая инструкция.
Пишем простейшее тестовое приложение, допустим "Hi Amigo!" в файл HiAmigo.txt 100 раз.
Идем File -> Project Structure -> Artifacts -> + JAR -> From Modules with dependencies..
Указываем путь к нашему Main.class:
Жмем ОК
Жмем Build Artifacts - > Action -> Build
Появляется наш артефакт:
Удаляем наш тестовый файл "C:\\temp\\HiAmigo.txt" и запускаем JAR. Файл должен появиться еще раз. Если появился - все ок.
Едем дальше.
Качаем тулзу с сайта https://launch4j.sourceforge.net/ (Рекомендую версию 3.14, потом объясню почему). Устанавниваем запускаем.
Нам нужно два поля. Указываем наш JAR и куда класть готовый .exe
Сейчас самое интересное.
Представьте ситуацию что на машине где мы планируем использовать наше приложение не установлена JRE и нет возможности ее установить.
Такое часто бывает по соображениям безопасности. К тому же хорошо бы обеспечить наше приложение более высоким уровнем автономности.
Делаем следующее.
Создаем отдельный каталог для нашего приложения, пусть OurApp. Внутри создаем папку JRE.
Качаем JRE (в моем примере пусть будет jre-8u361-windows-i586) устанавливаем куда нибудь (если это готовый архив разархивируем) и выдергиваем из нее все файлы. Копируем все в \OurApp\JRE\ должно получиться примерно так:
В Launch4j переходим во вкладку JRE и в поле Bundled JRE paths: указываем имя каталога JRE
Жмем на шестеренку и выбираем любой файл для сохранения конфигурации типа file.xml
После нажатия на save появится наш exe.
Копируем exe и кладем рядом рядом с папкой JRE
Удаляем тестовый C:\temp\HiAmigo.txt.
Запускаем exe и смотрим как создается новый.
Вот и все.
Теперь каталог можно OurApp можно архивировать и передавать куда угодно, exe отработает.
Важно:
Версия JRE в папке должна быть не ниже той на которой билдился артефакт. Проверяйте поле:
В моем случае возникли проблемы совместимости с x86 платформой и я использовал версию враппера 3.14, так как в ней можно явно указывать тип целевой архитектуры.
В общем всем спасибо за внимание.
Это была моя первая статья-инструкция, прошу не судить строго.
Всем мир!
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();
}
}
Проверяем что все работает на этом этапе (это важно!)












ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ