maven - 在 OSGi 应用程序中使用 Openjfx 11 类

标签 maven osgi eclipse-rcp openjfx javafx-11

有谁知道是否有办法在 eclipse 工作区中使用 JavaFX 模块?我有一个 OSGi-maven 多模块应用程序。

到目前为止,我已经尝试了几件事。

  • 下载 JavaFX SDK 并在 Eclipse 中添加 jars 作为用户定义的库。
  • 捆绑 JavaFX jar 并在此之后将它们用作常规 OSGi 捆绑包(添加为依赖项,然后在目标平台中添加)。

  • 这两件事都有效。但是,在第一种情况下,每个开发人员都必须手动将这些 jar 作为库添加到类路径中。在第二个对于每个平台,我们必须为每个模块有一个不同的包。

    如果我没有做这些事情,我就会出现无法找到 JavaFX 类的编译错误(如预期的那样)。

    有没有第三种方法可以做到这一点?通过使用一些 OSGi 功能或类似的东西?
    我还没有找到在 MANIFEST.MF 中添加模块的任何方法。这甚至可能吗?

    我在 OSGi 框架启动器中添加了 JavaFX 模块作为 VM 参数,并且一切正常。但我必须做前面提到的那些事情之一,这样我就不会出现编译错误。
    虚拟机参数:--module-path /path/to/javafx/sdk/11/lib --add-modules javafx.controls,javafx.graphics,javafx.base

    最佳答案

    我尝试将使用 JRE 8 的 E4/OSGI/GEF/JavaFx 项目转换为 JRE 11 和 OpenJFX 11,并找到了一种方法。

    就我而言,我使用 SWT 和 javafx.embed.swt.FxCanvas .在模块路径中包含用户定义的 JavaFX 库不起作用,在编译时生成类未找到错误;但在类路径中包含库工作。

    我也无法使用 --module-path 运行该应用程序论据;它给了 NoClassDefFoundError org.eclipse.swt.widgets.Canvas 的异常(exception)情况

    我的解决方案使用 E(fx)clipse,这也可能是您的第三种选择。在类路径中包含 javafx 库之后,并包含 org.eclipse.fx.osgi在项目配置中,我使用以下 VM 参数通过 E(fx)clipse 加载 JavaFX 类。
    -Dosgi.framework.extensions=org.eclipse.fx.osgi -Defxclipse.java-modules.dir=[openjfx-lib-directory]
    您也可以添加 -Defxclipse.osgi.hook.debug=true"在加载类时查看来自 E(fx)clipse 的调试消息。

    关于maven - 在 OSGi 应用程序中使用 Openjfx 11 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52818494/

    相关文章:

    java - 在应用程序执行期间如何覆盖logging.properties?

    java - 在 Karaf 中启动 bundle 时出现 OSGi os.wiring.package 错误

    css - Radio上的CSS样式和选中的按钮在RCP app e4中不起作用

    java - 将传递依赖行为与 xml-apis 混淆

    java - Maven:生成具有所有依赖项的可执行jar文件

    eclipse - 管理团队捆绑

    java - 如何使用实现相同接口(interface)的多个 bundle 中的正确 bundle ?

    java - 如何在Eclipse中将另一个Java项目打包为osgi依赖项

    java - jface向导中的事件onclick下一步按钮

    maven - 创建新阶段