将 jfxrt 移动到 lib/ext 以用于 OSGI

Posted

技术标签:

【中文标题】将 jfxrt 移动到 lib/ext 以用于 OSGI【英文标题】:Move jfxrt to lib/ext for OSGI purposes 【发布时间】:2012-12-03 03:15:09 【问题描述】:

有人建议解决javafx类加载和osgi问题的部分方法是将jfxrt移动到Java安装lib/ext目录,以便在JVM启动时加载它。

如果这是在 Java 的私有安装中完成的,则 javafx 类在设计时可用,但在安装 javafx 包时在运行时找不到。

这可以实现吗?

我在 Eclipse 中使用 felix 和 bndtools 作为 Ubuntu 12.04 上的开发环境。

【问题讨论】:

【参考方案1】:

我最近发布了Drombler FX 的第一个早期访问版本,这是一个基于 OSGi 和 Maven(POM 优先)的 JavaFX 模块化富客户端平台。

您可以在此处阅读更多信息: http://puces-blog.blogspot.ch/2012/12/drombler-fx-building-modular-javafx.html

入门: http://wiki.drombler.org/GettingStarted

这里解释了生成的输出: http://wiki.drombler.org/GettingStarted#drombler-fx-sample-application-the-binaries-explained

(我不必移动任何 JavaFX JAR。)

【讨论】:

【参考方案2】:

首先,使用 javafx 包的包必须使用Import-Package 导入它们。

接下来您需要获取系统捆绑包以导出包。默认情况下,系统包只导出标准的 JRE 包和 OSGi 框架包;您可以通过设置属性org.osgi.framework.system.packages.extra 来扩展它。由于您使用的是 Bndtools(好!),您可以按如下方式设置属性:

-runsystempackages: javafx.foo,javafx.bar...

【讨论】:

使用 bndtools,如何输入 Import-Package 详细信息? 如果在源中输入它们并运行解析,则运行选项卡中的所有详细信息都会消失。唯一的其他选择似乎是将一个捆绑包添加到运行要求中,这是如何使用 jfxrt jar 完成的? import package 语句会根据您在代码中实际使用的包自动添加到包中。 IE。如果您在代码中使用包org.foo,bnd 会将org.foo 添加到您的Import-Package。你不应该手动写Import-Package 关于您的第二条评论:jfxrt.jar 不应作为捆绑添加,因为 (a) Oracle 打算将其用作 JRE 本身的扩展库的一部分,并且 (b) 它是反正不是捆绑。由于它已经是 JRE 的一部分,您只需要使用 -runsystempackages 指令让您的 OSGi 捆绑包访问它。

以上是关于将 jfxrt 移动到 lib/ext 以用于 OSGI的主要内容,如果未能解决你的问题,请参考以下文章

jfxrt.jar 不在 JDK 1.8 中?

jfxrt.jar 不在 JDK 1.8 中?

将 y 轴移动到中间并在每侧制作两个图例以用于 Plotly 发散条形图

安装BouncyCastle

将 GCC 9.3.0 降级到 7 以用于 openpose 后,cuda_compile_1_generated_batch_norm_layer.cu.o.Release.cmake 出现 CMa

JavaFX 运行时 JAR 文件 jfxrt.jar 在 Linux 上的位置是啥?