我有 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/