2013-02-22 3 views
4

У меня есть приложение Java, состоящее из нескольких файлов JAR с предварительной компоновкой, и мне нужно развернуть их для разных платформ. Недавно я обнаружил javafxpackager, который может создавать собственные инсталляторы/исполняемые файлы для Windows, Mac и Linux для приложений JavaFX2. Поскольку мое приложение предварительно построено и не использует JavaFX2, я не получал пакет для работы с моим приложением.Использование javafxpackager для приложения, отличного от JavaFX2

Есть ли у кого-нибудь опыт в этом и может помочь? Или есть еще один инструмент, который обеспечивает функциональность javafxpackager для приложений, отличных от JavaFX2?

+0

Согласно [this] (http://docs.oracle.com/javafx/2/deployment/packager.htm), он не делает туземцев. Но тогда это плохая идея, так что не делайте этого. Просто используйте упаковщик для объединения компонентов и развертывания партии с помощью [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info). –

ответ

2

У меня есть работающее приложение JavaFX 2, и я использую JavaFX Ant Tasks (http://docs.oracle.com/javafx/2/deployment/javafx_ant_task_reference.htm#CIADCBJG) для создания пакета приложений для Mac OS X. Я знаю, что задачи JavaFX Ant не совсем то же самое, что и инструмент JavaFX Packager, очень похожи в плане функциональности, которую они предоставляют.

Я изменил основной класс приложения моего приложения JavaFX 2, чтобы не использовать какие-либо материалы JavaFX и просто всплывал окно с использованием AWT.

import java.awt.*; 
public class MainApplication { 
    public static void main(String [] args) { 
     Frame f = new Frame("Example 1"); 
     f.show(); 
    } 
} 

Затем я снова запускаю скрипт сборки Ant (без изменений) для создания нового пакета приложений. Новый пакет приложений можно запустить на Mac без проблем. Итак, я думаю, что может иметь возможность использовать javafxpackager для приложений, отличных от JavaFX2, хотя бы приложений на основе Java AWT.

3

Вы можете это сделать.

  1. Создайте свое приложение в банках, как вы сейчас делаете.
  2. Запустите javafxpackager с помощью переключателя -createjar, чтобы создать новую банку на основе существующей банки. Новая банка будет содержать манифестные записи, которые позволят вам запустить банку с помощью java -jar app.jar.
  3. Запустите javafxpackager снова с помощью -deploy и -native переключателей для упаковки jar и java runtime в качестве собственного приложения с установщиком (self-contained application).

важные команды таковы:

echo make an executable jar file 
$JAVA_HOME/bin/javafxpackager -createjar -srcdir . -appclass start.HelloWorldSwing -srcfiles HelloWorldSwing.jar -noembedlauncher -outdir . -outfile HelloWorld.jar 

echo package the jar and java runtime as a native application with installer 
$JAVA_HOME/bin/javafxpackager -deploy -srcdir . -srcfiles HelloWorld.jar -outdir . -outfile HelloWorld -appclass start.HelloWorldSwing -native -name HelloWorld 

Вот complete OS X script вы можете использовать для создания приложения Java, создать родной пакет приложений для него, установить родной пакет и запустить установленное приложение. Сценарий использует javafxpackager для создания собственного пакета приложений. Установленное приложение - это приложение Swing, которое не использует JavaFX (просто чтобы продемонстрировать, что javafxpackager не нужно работать только с кодом JavaFX). Кроме того, команда javafxpackager в скрипте использует банку, ранее созданную с помощью команды jar, чтобы показать, что javafxpackager не нуждается в работе над файлами raw-класса, но может принимать в качестве входной баночки, ранее построенной с помощью какой-либо другой инструментальной цепочки.

Вы можете создавать пакеты для других операционных систем и форматов упаковки, например. Windows Apps и Linux RPM или DEB. Подробную информацию о настройке установок для каждой ОС см. В документации javafxpackager. Если вы используете инструмент javafxpackager командной строки, вам нужно будет создать сценарии оболочки оболочки для каждой из ваших целевых операционных систем. Если вы используете задачи упаковки javafx ant, тогда вы можете использовать один и тот же сценарий упаковки для разных операционных систем. Посмотрите на source for the javafx samples, например Ensemble или SwingInterop, на примерах использования задач упаковки муравьев для создания собственных пакетов.

Для создания инсталляторов Windows вам необходимо установить на ваш компьютер дополнительное бесплатное программное обеспечение, как описано в документации javafxpackager. Для создания rpms вам понадобятся утилиты упаковки rpmbuild, установленные на вашем компьютере. В настоящее время невозможно создать собственные пакеты для всех ОС с одной машины (вы можете создавать собственные пакеты, специфичные для этого типа).


Помните, что родные пакеты javafxpackager являются лишь одним из многих вариантов развертывания приложений Java. Другие включают webstart, исполняемые файлы jar, сторонние варианты упаковки и встроенные приложения браузера. Выберите вариант, наиболее подходящий для вашего приложения, пользователей, уровень развития и уровень сложности.


Альтернативный Набор инструментов я использовал в прошлом с отличным успехом для родных пакетов программного обеспечения Unix (особенно на стороне сервера приложений для предприятий), является maven с rpm maven plugin сборками создана при jenkins развертывания в nexus хранилище с nexus yum plugin. Эта инструментальная цепочка позволяет перейти от проверки кода к набору развертываемых пакетов с помощью управления зависимостями yum. Этот альтернативный набор инструментов требует немного изощренности для использования, хотя и не охватывает диапазон платформ, которые делает javafxpackager.

+0

Пример HelloWorld работает достаточно хорошо. Он пробовал такой же подход с моим приложением, и он не удалось из-за отсутствия зависимостей. Есть ли возможность включить файлы jar зависимости? – porst17

Смежные вопросы