Мы хотим использовать SWT и JavaFX в плагине Eclipse в нашем приложении RCP. К сожалению, у нас возникают проблемы при интеграции SWT с JavaFX под Java 11. В среде сборки используется e (fx) clipse 3.5. Мы разрабатываем версию JDK 11 для Azul Systems, выпущенную сообществом, в комплекте с версией AzJ OpenJFX.
Раньше мы разрабатывали под Java 8. В этот момент наша сборка использовалась во время компиляции. путь к классу, ссылающийся на jfxswt.jar
, который находится в каталоге jre/lib
JDK. Мы не использовали никаких специальных настроек пути к классам во время выполнения.
Мы сейчас пытаемся перейти на Java 11. Там этот JAR стал javafx-swt.jar
и живет в каталоге lib
JDK. Кажется, больше не достаточно установить путь к классу для ссылки на этот JAR во время компиляции: кажется, что это необходимо делать и во время выполнения. Если мы этого не сделаем, мы получим ошибку (java.lang.NoClassDefFoundError: javafx/embed/swt/FXCanvas
).
В качестве теста мы экспериментально внедрили javafx-swt.jar
в JAR, реализующий наш плагин Eclipse. Затем мы сослались на него в файле .classpath
этого плагина, и код работал, как и ожидалось. К сожалению, мы не можем встроить JAR таким образом по юридическим и другим причинам.
Примечание по модулям Java: javafx.swt
не отображается в выводе, когда мы выполняем команду --list-module
. Мы попытались запустить приложение, используя параметры -p /path/to/JDK/lib/javafx-swt.jar --add-modules javafx.swt
, но, похоже, это не решило проблему.
Мой вопрос: есть ли способ настроить путь к классу или модулю, чтобы наш плагин Eclipse мог найтиэта библиотека в JRE? Любое решение должно работать с любой JRE, с которой запускается код (я думаю, что вполне нормально предполагать, что lib/javafx-swt.jar
будет жить в этой JRE).
Поможет ли это использовать отдельно загруженный файл? версия OpenJFX, а не копия OpenJFX в нашем JDK?
Большое спасибо ☺