Google

29 апр. 2011 г.

Делаем *.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, которая должна быть установлена в системе;

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

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

11 comments:

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

Social