gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:44:20 24 4
gpt4 key购买 nike


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

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

  1. 下载 JavaFX SDK 并将 jar 添加到 eclipse 中作为用户定义的库。
  2. 捆绑 JavaFX jar,然后将它们用作常规 OSGi bundle (添加为依赖项,然后添加到目标平台中)。

这两种方法都有效。但是,在第一种情况下,每个开发人员都必须手动将这些 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

最佳答案

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

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

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

提供了 NoClassDefFoundError 异常

我的解决方案使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com