Использование классов Openjfx 11 в приложении OSGi - PullRequest
0 голосов
/ 15 октября 2018

Кто-нибудь знает, есть ли способ использовать модули JavaFX в рабочей области Eclipse?У меня есть мультимодульное приложение OSGi-maven.

До сих пор я пробовал несколько вещей.

  1. Для загрузки JavaFX SDK и добавления jar-файлов в eclipse в качестве пользовательской библиотеки.
  2. Для объединения JavaFX-jar и использования их в качестве обычных пакетов OSGi после этого (добавлено как зависимостьи после этого в target-platform).

Обе эти вещи работают.Но в первом случае каждый разработчик должен был бы вручную добавить эти jar-файлы в качестве библиотеки на пути к классам.И во втором случае для каждой платформы у нас должен быть свой пакет для каждого модуля.

Если я не выполню ни одну из этих вещей, у меня возникают ошибки компиляции, из-за которых классы JavaFX не могут быть найдены (как и ожидалось).

Есть ли третий способ сделать это?Используя некоторые функции OSGi или что-то в этом роде?Я не нашел способа добавить модуль в MANIFEST.MF.Это вообще возможно?

Я добавил модули JavaFX в качестве аргументов виртуальной машины в средство запуска OSGi Framework, и все работает нормально.Но я должен сделать одну из упомянутых ранее вещей, чтобы у меня не было ошибок компиляции.Аргументы VM: --module-path /path/to/javafx/sdk/11/lib --add-modules javafx.controls,javafx.graphics,javafx.base

1 Ответ

0 голосов
/ 10 апреля 2019

Я попытался преобразовать проект E4 / OSGI / GEF / JavaFx, который использует JRE 8, в JRE 11 и OpenJFX 11, и нашел способ сделать это.

В моем случае я использую SWT и javafx.embed.swt.FxCanvas.Включение пользовательской библиотеки JavaFX в путь к модулю не работало, генерируя ошибки класса not found во время компиляции;но в том числе библиотека в classpath работала.

Я также не смог запустить приложение, используя --module-path аргументы;он дал NoClassDefFoundError исключение для org.eclipse.swt.widgets.Canvas

Мое решение использует E (fx) clipse, что также может быть третьим вариантом для вас.После включения библиотек javafx в путь к классам и включения org.eclipse.fx.osgi в конфигурацию проекта я использовал следующие параметры виртуальной машины для загрузки классов JavaFX с использованием E (fx) clipse.

-Dosgi.framework.extensions=org.eclipse.fx.osgi -Defxclipse.java-modules.dir=[openjfx-lib-directory]

Вы также можете добавить -Defxclipse.osgi.hook.debug=true", чтобы увидеть отладочные сообщения из E (fx) clipse при загрузке классов.

...