JavaFx 资源 (css) 和 OSGi

标签 java javafx osgi

我有 osgi (felix) javafx 应用程序。启动应用程序时,我得到:

May 30, 2015 10:44:59 PM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged
WARNING: Resource "com/sun/javafx/scene/control/skin/modena/modena.css" not found.
May 30, 2015 10:44:59 PM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged
WARNING: Resource "com/sun/javafx/scene/control/skin/modena/modena.css" not found.

我的舞台没有 css 规则(也没有边框等)。我找到的唯一解决方案是

Bundle systemBundle =FrameworkUtil.getBundle(MyApplication.class).getBundleContext().getBundle(0);
URL url0=systemBundle.getResource("com/sun/javafx/scene/control/skin/modena/modena.css");
URL url1=systemBundle.getResource("com/sun/javafx/scene/control/skin/modena/modena-no-transparency.css");
scene.getStylesheets().add(url0.toString());
scene.getStylesheets().add(url1.toString());

但是这是一个糟糕的解决方案,而且我需要在每个阶段都这样做。有什么更好的方案可以解决这个问题?

最佳答案

我找到了答案。有必要将包添加到 manifest.mf 的导入部分。当我使用 maven 时,它可以通过 maven-bundle-plugin 完成

<plugin>
   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <version>2.3.7</version>
   <extensions>true</extensions>
   <configuration>
       <instructions>
         <Import-Package>com.sun.javafx.scene.control.skin.modena,*</Import-Package>
       </instructions>
   </configuration>
</plugin>

最重要的是末尾的星号。为了添加这个包需要的所有自动检测包是必要的。如果我们省略这个标志,那么我们将不得不手动添加所有包。

关于JavaFx 资源 (css) 和 OSGi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550688/

相关文章:

java - 我可以验证空数据源/空白 pdf 吗?

java - 为什么只有部分文件和文件夹没有被删除?

java - 用于序列化 List<String> 中的 List<User> 的自定义序列化程序

JavaFX:如果内部有项目,SplitPane 会在调整大小时更改分隔线位置

java - org.osgi.framework.BundleException : Unresolved constraint in bundle SampleModel

java - 在 Java 中验证证书会引发异常 - 无法找到指向请求目标的有效证书路径

javafx - 网格 Pane : Change grid line color

java - javafx 8 中的自定义 3D 立方体蒙皮

java - AEM 6.0 Web 控制台 bundle (OSGi bundle )中安装的软件包未正确安装(状态应为 Activity 未安装)

java - 我无法在我的 OSGI 包中加载 HelpGUI