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

问题描述 投票:2回答:1

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

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

  1. 下载JavaFX SDK并在eclipse中添加jar作为用户定义的库。
  2. 捆绑JavaFX jar并在此之后将它们用作常规OSGi包(作为依赖项添加,然后在target-platform中添加)。

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

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

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

我在OSGi框架启动器中添加了JavaFX模块作为VM参数,一切正常。但我必须做之前提到的那些事情之一,以便我没有编译错误。 VM参数:--module-path /path/to/javafx/sdk/11/lib --add-modules javafx.controls,javafx.graphics,javafx.base

maven osgi eclipse-rcp openjfx javafx-11
1个回答
0
投票

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

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

我也无法使用--module-path参数运行应用程序;它为NoClassDefFoundError提供了org.eclipse.swt.widgets.Canvas例外

我的解决方案使用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的调试消息。

© www.soinside.com 2019 - 2024. All rights reserved.