Уже есть проблема , поданная по этому поводу, но не решение.
Я действительно не пытался заставить его работать полностью, но это необходимые шаги для запускаjar на Java 11, который требует JavaFX 11, но не связывает его:
Перейдите на OpenJFX docs и прочитайте о том, как начать работу с JavaFX 11.
Загрузите JavaFX 11 для вашей платформы с здесь .Распакуйте его
При условии, что у вас установлена Java 11 и задано значение JAVA_HOME:
С mqtt-spy-1.0.0.jar
(как последняя версия )), вы можете запустить:
java --module-path /path-to/javafx-sdk-11.0.1/lib \
--add-modules javafx.controls,javafx.fxml -jar mqtt-spy-1.0.0.jar
После запуска вы получите это исключение:
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
Начиная с Java 9, JAXB также не является частью JDK,Таким образом, вы можете добавить попытку загрузить зависимость из здесь ) и добавить ее в путь к классам.Но это займет несколько итераций (есть еще несколько необходимых jar-файлов, см. this ).
Так почему бы вам не использовать последний снимок available ,это включает в себя зависимости: mqtt-spy-1.0.1-beta-b18-jar-with-dependencies.jar
.
При этом:
java --module-path /path-to/javafx-sdk-11.0.1/lib \
--add-modules javafx.controls,javafx.fxml -jar mqtt-spy-1.0.1-beta-b18-jar-with-dependencies.jar
Я получаю:
Предупреждение : Но это не значит, что приложение будет работать полностью.Учитывая, что это приложение Java 8, в JavaFX 11 произошли некоторые изменения, связанные в основном со скинами управления.Если приложение использовало закрытый API (com.sun.javafx ....), это не будет работать сейчас, потому что оно было перемещено в общедоступные пакеты или потому, что оно недоступно для модулей.Для последнего вы можете использовать --add-opens
, но для первого нет другого решения, кроме как обновить зависимости приложения до Java 9 +.