Как развернуть JavaFX в настольном приложении Swing

Мне удалось внедрить JavaFX HTMLEditor внутрь Swing настольное приложение, использующее этот это руководство, локально в Eclipse все отлично работает .

Мой вопрос в том, как развернуть это для наших клиентов? У Oracle есть руководство по развертыванию WebStart и апплета, но я не вижу информации для настольные приложения.

В настоящее время я копирую библиотеки и двоичные файлы из установленного JavaFX SDK в свой проект и включаю их при компиляции дистрибутива:

/my/application/lib/javafx/lib/javafxrt.jar
/my/application/lib/javafx/bin/[dll:s from JavaFX Runtime]

Но это кажется очень странным, должен же быть лучший способ? Мне нужно немного помощи здесь. Дело в том, что во время разработки в Eclipse мне нужно javafxrt.jar в пути к классам, поэтому я скопировал файл jar, потому что не видел никакой переменной среды, такой как javafx_home, которую я мог бы использовать. Но когда загружается JavaFX, он пытается загрузить dll: по относительному пути, поэтому я также скопировал dll в свой проект.

Это проблематично для развертывания, я предпочитаю не поставлять 32-битную среду выполнения JavaFX, если у клиентов установлена ​​64-битная JVM (я думаю, это не сработает). В настоящее время наши клиенты используют только Windows, так что на данный момент это не проблема.

Нет ли способа во время выполнения проверить, установлен ли JavaFX или нет, и если да, то получить путь к нему «динамически»? Доставка jar-файла не проблема, но меня беспокоят двоичные файлы, зависящие от платформы.

Обновление: WebStart не подходит, потому что мы связываем/устанавливаем приложение со старым приложением для Windows, которое является предшественником, еще не все функции перенесены, поэтому два приложения взаимодействуют с помощью специального протокола IPC.

Любая помощь приветствуется! Заранее спасибо.


person Uhlen    schedule 18.10.2011    source источник


Ответы (3)


Используйте Java Web Start для развертывания приложения. JWS упрощает добавление зависимых JAR-файлов и нативных файлов в путь к классам во время выполнения приложения и может разделять загрузку нативных приложений по платформам.

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

person Andrew Thompson    schedule 18.10.2011
comment
К сожалению, WebStart не вариант, смотрите мое обновление. Любые другие идеи? - person Uhlen; 18.10.2011
comment
Есть другие идеи? Объясните, какую часть обновления нельзя выполнить с помощью JWS. - person Andrew Thompson; 18.10.2011
comment
В конечном итоге я согласен, что решение на основе JWS было бы хорошим. Хотя на данный момент я искал решение без изменения нашего процесса сборки/упаковки/развертывания. Мы создаем дистрибутив обоих приложений в комплекте с InnoSetup, если это имеет какое-либо значение. - person Uhlen; 18.10.2011
comment
В JWS есть элемент installer-desc для вызова собственных установщиков, это всего лишь одна ссылка помимо двух ссылок, которые я предоставил. - person Andrew Thompson; 18.10.2011

Используйте новые задачи JavaFX ant, описанные здесь. Работал нормально для меня.

РЕДАКТИРОВАТЬ: См. также нативную упаковку: https://blogs.oracle.com/talkingjavadeployment/entry/native_packaging_for_javafx< /а>

person laobeylu    schedule 04.08.2012

Вы можете встроить компонент JavaFX в приложение Java Swing, используя JFXPanel (javafx.embed.swing.JFXPanel). он используется для встроенных компонентов JavaFX в приложении Java Swing. узнайте больше о JFXPanel на https://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/JFXPanel.html

person Ganesh    schedule 06.01.2016
comment
Это то, что говорит учебник, связанный с вопросом. Вопрос в том, как развернуть это для наших клиентов? - person Michael Mrozek; 23.03.2016
comment
это легко развернуть, просто попробуйте - person Ganesh; 29.03.2016