Мне удалось построить проект, и, получив пробную лицензию, я могу его запустить.Как вы упомянули, запуск из IDE или из командной строки mvn compile exec:exec
(я также пробовал с Gradle, ./gradlew run
, добавляя необходимые - add-exports ), работает отлично,отображается браузер и загружается указанный URL.
Однако, как вы сказали, если вы создаете толстый флягу и запускаете ее, он не отображает браузер, но JavaFX работает, и вы можете увидеть, как происходит некоторая активностьвключен, только без рендеринга.
Я пробовал в JDK 8, 9, 10 и 11. Только под 8 я мог получить толстую банку для отображения браузера.
Использование толстой банкиЭто плохая практика в целом, а теперь еще хуже, поскольку вам нужно включить классы JavaFX из JavaFX SDK.
Лучший способ распространения вашего приложения - использовать jlink .
Учитывая, что com.teamdev.jxbrowser:jxbrowser
не является модульным, вы не можете полностью использовать jlink
с вашим проектом, но вы можете создать собственный образ времени выполнения только с модулями JavaFX и использовать его для запуска своего приложения сединственная зависимость jxBrowser
(для удобства я не использую SpringBoot).
Так что, если вы загружаете jmods JavaFX из здесь , разархивируйте их и запустите:
export PATH_TO_FX_MODS=/path-to/javafx-jmods-11
$JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS \
--add-modules=java.se,javafx.web,javafx.fxml,javafx.swing \
--output jre
вы создадите JRE, содержащую JavaFX.
Затем вы сможете запустить свой проект, включая зависимости в пути к классам:
jre/bin/java -cp \
/Users/<user>/.gradle/caches/modules-2/files-2.1/com.teamdev.jxbrowser/jxbrowser/6.22/c9...6b/jxbrowser-6.22.jar:\
/Users/<user>/.gradle/caches/modules-2/files-2.1/com.teamdev.jxbrowser/jxbrowser-mac/6.22/fa...d4/jxbrowser-mac-6.22.jar:\
build/libs/browserApp.jar jxbrowser.BrowserApp
Это также отлично работает, браузеротображается.Поэтому мы отказываемся от возможных проблем с JavaFX 11.
Теперь мы все еще можем сделать маленький толстый jar с проектами и зависимостями jxBrowser.И затем, если вы запустите:
jre / bin / java -cp build / libs / browserApp.jar jxbrowser.BrowserApp
, как вы можете себе представить, это не будет работать, браузер выиграл 'не показывается.
Итак, мой последний вывод: добавление толстой банки даже только с двумя jxBrowser
зависимостями не работает.
См., Например, эту запись о возможных причинах этого:
Могут быть файлы с одинаковым путем, присутствующие в нескольких JAR-файлах и по умолчанию плагин Shadeвключает первый файл в толстый JAR и отбрасывает остальные.
Поэтому я бы предложил вам подать проблему в систему отслеживания проблем проекта, если она существует, и я бы также предложил вам найти способзапустить ваше приложение без жирных банок.