Делаем *.exe файл для Java - программы

Предположим, что у нас есть программа, написанная на языке Java, возможно даже имеется исполняемый JAR файл и мы хотим сделать exe-файл нашей программы или нашего Jar файла.  (Ну вот очень захотелось понадобилось). Для этого можно воспользоваться инструментом под названием Launch4j, который является кросс-платформенным и служит для упаковки jar в родные для Windows исполняемые файлы (в данном случае *.exe файлы). Кроме того, данный инструмент обладает богатым функционалом: например, можно прикрутить Splash - заставку для нашего исполняемого файла, можно, а точнее даже необходимо, в опциях программы задать минимальную и максимальную версию Java, можно выводить различного рода сообщения при той или иной ошибке, можно добавить описание нашей программы (указать версию, авторские права, описание файла и т.д. и т.п.). Более подробный список функциональных возможностей приведен на официальной страничке программы.  Для скачивания доступны версии для Windows, MacOS, Solaris и Linux. Официальную документацию можно почитать тут.
Теперь попробуем данный инструмент в деле и для начала напишем найдем у себя в закромах небольшую программку на Java. Например вот такую:
package com.lex;

import java.awt.EventQueue;

import javax.swing.JFrame;
import net.miginfocom.swing.MigLayout;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.SwingConstants;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JTabbedPane;
import javax.swing.JScrollPane;

public class MainFrame {

 private JFrame frame;
 private JScrollPane scrollPane;
 private JTabbedPane tabbedPane;

 /**
  * Launch the application.
  */
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     MainFrame window = new MainFrame();
     window.frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }

 /**
  * Create the application.
  */
 public MainFrame() {
  initialize();
 }

 /**
  * Initialize the contents of the frame.
  */
 private void initialize() {
  frame = new JFrame();
  frame.setBounds(100, 100, 450, 300);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().setLayout(new MigLayout("", "[217px]", "[237px]"));
  
  JTabbedPane jtp = new JTabbedPane();
   jtp.addTab("1-я вкладка", new JLabel ("Первая метка"));
   jtp.addTab("2я вкладка", new JLabel ("2я метка"));
   
  frame.getContentPane().add(jtp, "grow");
 }

} 
Данная программа создает форму и панель с вкладками. В каждой вкладке имеется по одной текстовой метке. Программа выглядит следующим образом:
Простая программа

Теперь экспортируем/скомпилируем нашу программу в исполняемый jar файл (Я использовал IDE  Eclipse): пкм по проекту и выбираем "Export-->Java-->Runnable jar file". В появившемся окне напротив Lanch Configuration выбираем наш проект. Напротив Export distination указываем путь куда экспортировать наш jar файл. Напротив Library handling выбираем любой из вариантов. Если выбираем пункт  Copy required libraries....  - "Копирование необходимых библиотек ... " - не забываем при копировании/перемещении *.exe файла копировать/перемещать папку с необходимыми библиотеками туда же, куда копируем *.exe файл - иначе программа не будет работать. 
Подготовительные работы проведены, теперь можно приступать к упаковке .exe файла, не забыв предварительно скачать Launch4j. в соответствии с нашей ОС.
Скачанный архив программы для linux распаковываем в любое удобное место, находим файл launch4j или launch4j.jar, в свойствах ставим разрешение на запуск и запускаем один из этих файлов. 
Главное окно программы будет выглядеть примерно так:
Главное окно программы launch4j

Как видно из скриншота, я уже заполнил некоторые поля для ввода. Если *.exe  файл упаковывать из исполняемого jar файла, то обязательными полями для заполнения будут:
  • Output file - указываем путь, имя и расширение exe для нашего исполняемого файла;
  • jar - указываем месторасположение нашего исполняемого jar файла;
  • Min JRE vertion (вкладка JRE) - минимальная версия JRE, которая должна быть установлена в системе;

Ну вот пожалуй и все. Остальные функции можно включать уже на свое усмотрение.

ЗЫ: статья навеяна материалами данного блога.

Комментарии

  1. Тьфу, и всё-таки все эти допиливания под Винду - сплошная камасутра. То ли Linux: пиши на чём хочешь - всё подтянется из репозиториев, не смущая пользователя.

    ОтветитьУдалить
  2. Таки полностью согласен :)
    Хотя многие считают, что Linux - сплошная камасутра.

    ОтветитьУдалить
  3. Lex, я те дам согласен! :))
    я старый лузер, и кроме окон и мисидоски ничего не знаю :) ах да... бесик там еще...

    uncle Mr. Strel.

    ОтветитьУдалить
  4. Ну так значит будем обучать премудростям :D
    ЗЫ: готовь свой ноут - будем ставить Linux :D

    ОтветитьУдалить
  5. Пытаюсь сделать так, как указано в статье. Ввел все, что необходимо. А сделать .exe файл все равно не получается. Программка launch4j тупо не дает нажать кнопку "Test Wrapper"

    ОтветитьУдалить
  6. Для того, чтобы собрать exe файл, первым делом нажимаем кнопку Build Wrapper.
    В результате внизу програмыы в поле Log будет выведено что-то подобное:
    Compiling resources
    Linking
    Wrapping
    Successfully created /home/oit2/temp/java/test.exe

    После этого (если не было ошибок) можно нажать Test Wrapper - программа попытается запустить exe файл. Если все прошло без ошибок, то появится появится то, что Вы написали.

    ОтветитьУдалить
  7. мне понравилась статья, автору спасибо огромное)

    ОтветитьУдалить
  8. Min JRE vertion (вкладка JRE) - минимальная версия JRE, которая должна быть установлена в системе;

    Я так понимаю если у пользователя вообще не установлена JRE то инсталлятор погонит его в тырнет ?

    Как запихать в инсталятор все ? Что бы пользователь просто нажал установить, запустить и без танцев с бубнами ? Он все таки пользователь))

    ОтветитьУдалить
  9. как сделать такой exe файл, который будет запускаться на компьютерах с неустановленной JRE?

    ОтветитьУдалить
  10. Анонимный13 июля 2017 г., 13:00

    JRE не установлен на пк, то этот способ можно посылать смело на ХУЙ и не пихать его как вариант решения запуска jar файлов на винде. Долбаебы блять.

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Написание сервлетов в Java при помощи NetBeans

Права доступа в Debian и команды chmod и chown

Установка Apache Tomcat в ОС Windows