Java project into exe

Create Windows Executable (.exe) for Java Application

Launch4j is a cross-platform tool for wrapping Java applications distributed as jars in lightweight Windows native executable files. In this post, we will learn making such an executable file for a demo java application.

Step1 ) Create a java application

I am creating a very basic java class which simply displays a frame and some text on it. It also has the main() method which will start the application.

package com.howtodoinjava; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.Label; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JDialog; public class ApplicationMain extends JDialog < private static final long serialVersionUID = 1L; public ApplicationMain() < //Create a frame Frame f = new Frame(); f.setSize(500, 300); //Prepare font Font font = new Font( "SansSerif", Font.PLAIN, 22 ); //Write something Label label = new Label("Launch4j Maven Demo with HowToDoInJava.com"); label.setForeground(Color.RED); label.setFont(font); f.add(label); //Make visible f.setVisible(true); f.addWindowListener(new WindowAdapter() < public void windowClosing(WindowEvent e) < System.exit(0); >>); > public static void main(final String[] args) < new ApplicationMain(); >>

Step 2) Create maven file with launch4j configured in it

I have created a pom file for packaging the application as .exe file. If you feel something unclear, drop a comment.

 4.0.0 com.howtodoinjava JavaExeDemo jar 1.0-SNAPSHOT JavaExeDemo http://maven.apache.org UTF-8    org.apache.maven.plugins maven-compiler-plugin 2.5.1 1.6 1.6   org.apache.maven.plugins maven-shade-plugin 1.7.1  package shade    true shaded  com.howtodoinjava.Main     com.akathist.maven.plugins.launch4j launch4j-maven-plugin 1.5.1  l4j-clui package launch4j  gui $/$-$-shaded.jar $/howtodoinjava.exe http://java.com/download com.howtodoinjava.ApplicationMain anything  application.ico 1.6.0 preferJre  1.0.0.0 $ $ 2012 howtodoinjava.com 1.0.0.0 1.0.0.0 $ howtodoinjava.com howtodoinjava howtodoinjava.exe         

Step 3) Create .exe file

To make the exe file for above java program, run maven command:

Above command will create the “howtodoinjava.exe ” file in your project’s target folder. Double click on .exe file will open the window like this.

Launch4j maven demo to create java executable

If you want to download source code of above application, click on below given download link.

Happy Learning !!

Источник

Как в IntelliJ IDEA написать и собрать в исполняемый .exe файл приложение на JavaFX

https://psiola-center.ru/wp-content/uploads/8/1/1/81134bcfd8aedee7cf9ebe292a83861f.jpeg

Как я уже писала в своей предыдущей статье, недавно, после двухлетнего обучения (обещали 12 месяцев, но жизненные и геополитические обстоятельства внесли свои коррективы в сроки получения дополнительного образования), я стала java-разработчиком.

Завершение обучения требовало написания выпускного проекта, которым я, изрядно поразмыслив, решила «убить сразу несколько зайцев»:

  • проект должен быть написан мной самостоятельно (без команды),
  • быть законченным и полноценным с точки зрения «бэка и фронта»,
  • функционал проекта должен нести какую-то информативную пользу,
  • проект станет подарком на день рождения.

Вспомнив все, чему меня «пытались научить», я решила, что за 1,5 месяца, отведенных на выпускную работу (с учетом загруженности по основному месту своей занятости), я вполне самостоятельно справлюсь с написанием оконного приложения для рабочего стола по предоставлению пользователю текущих и прогнозных значений погоды. Оболочку приложения решила выполнить на JavaFX, а для получения данных о погоде использовать JSON.

Когда я выслала преподавателю техническое задание с характеристиками проекта, он, восседая на удобном кресле где-то в пригороде германского города Мюнхен, меня, великовозрастную студентку из Санкт-Петербурга, «обрадовал и окрылил» тем, что знания по JavaFX в реальной жизни мне не пригодятся, и я рискую впустую потратить время…

Ну что же, такая откровенность на завершающей стадии обучения, конечно, похвальна. Осознав, что целый курс, посвященный разработке приложения на JavaFX, получается, еще год назад был пустой тратой времени, я решила не отступаться и попробовать реализовать задуманное.

Процесс и трудности, с которыми пришлось столкнуться

Не особо вдумываясь в тонкости платформы JavaFX и ее представлении в выпусках Java-8, я решила писать приложение на JDK-1.8 в среде разработки IntelliJ IDEA Community Edition, используя maven.

Начиная создавать проект стандартным путем и пытаясь упростить себе жизнь, я выбрала настройки, как показаны на скриншоте:

и, нажав на кнопку «Next», получила неожиданное для себя сообщение:

Да-да, я не знала той тонкости, что JavaFX, представленный как часть выпуска Java-8, был удален из JDK и перенесен в отдельный модуль в Java-11.

Ну что же, начав все сначала, я выбрала JDK-11.0.2, и у меня чудесным образом создался проект с необходимыми классами и ресурсными файлами, со всеми нужными зависимостями и способами сборки, автоматически прописанными в pom.xml файле:

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

Далее была длительная полуторамесячная работа над проектом, в процессе которой:

  • я внесла изменения в базовый код, сформированный IntelliJ IDEA автоматически,
  • создала сцены с помощью JavaFX Scene Builder 2.0,
  • установила получение информации по JSON,
  • и прочее, прочее, прочее… пока в среде разработки все не начало запускаться, открываться и отображаться так, как мне бы хотелось.

С финальной версией проекта и демонстрацией его возможностей можно ознакомиться на GitHub.

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

Но, не забываем, программа должна была стать подарком на день рождения. У именинника не установлена Java, чтобы запустить jar-файл проекта и наслаждаться результатом работы приложения. Значит, нужно собрать проект в исполняемый .exe файл, который будет запускаться на любом устройстве с установленной системой Windows.

«Ерунда какая!» — подумала я, — «У меня же IntelliJ IDEA, она все сама соберет и подскажет, в случае чего».

Захожу в File -> Project Settings -> Artifacts -> JavaFx application -> From Module ‘имя модуля’

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

Заполняю сведения об основном классе, который запускает приложение (поле Application class):

В той же вкладке указываю значение «all» в поле Native bundle и применяю настройки:

После вхожу в режим Build -> Build Artifacts, выбираю только что созданный артефакт и… получаю сообщение, что используемая версия JDK не способна собрать мой проект в необходимый пакет:

Начитавшись всего, чего только возможно, во всемирной паутине, я решаюсь на эксперимент:

1. Заменила в pom.xml файле версию Java 11 на 8, обновилась:

2. В File -> Project Structure -> Project указала корректную версию используемой SDK:

3. Закомментировала (можно удалить) файл module-info.java, сформированный Java-11 автоматически при создании проекта:

4. Проверила, запускается ли приложение до сборки:

5. Описанными выше способами снова создала и собрала артефакт. Но! – опять получила ошибку:

6. После непродолжительных поисков причины я поняла, что на ноутбуке, на котором написана моя программа, собрать ее в исполняемый .exe файл у меня пока не получится, т.к. в наименовании пути к директории не должно быть ни кириллицы, ни специальных символов:

И изменение имени учетной записи Windows вручную не приведет к изменению имени пользовательской папки.

7. Не рискнув «копаться в мозгах» установленной на ноутбуке операционной системы, я воспользовалась стационарным компьютером, не имеющим в наименовании директорий кириллицу, и спокойно собрала проект.

Запускаемый .exe файл располагается в папке out\artifacts\название артефакта\bundles\название проекта:

Вместо заключения

При кажущейся простоте создания приложения на JavaFX (особенно с помощью JavaFX Scene Builder 2.0 и бесплатных видео-уроков на различных ресурсах), написание функционала программы – это только половина пути. Программа должна работать, жить своей жизнью самостоятельно, без привязки к среде разработки. И, как показывает мой личный опыт, при сборке проекта и выпуске его в «большой мир» приходится преодолевать немало терний.

Надеюсь, что моя статья поможет кому-нибудь избежать ошибок, найти ответы на вопросы или просто сразу пойти правильным путем (например, создавать обычный maven-проект на Java-8, вручную прописывая в pom.xml зависимости и способ сборки, и всегда указывать на латинице имена учетных записей, директорий в своей операционной системе).

Источник

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

Java-университет

Кратчайшая инструкция. Пишем простейшее тестовое приложение, допустим «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, так как в ней можно явно указывать тип целевой архитектуры. В общем всем спасибо за внимание. Это была моя первая статья-инструкция, прошу не судить строго. Всем мир!

Источник

Читайте также:  Php libc so 6
Оцените статью