当我尝试在JavaFX 2.2(从JDK 7更新11)中使用我自己的自定义css时,出现以下记录到stderr的异常。这很有趣,因为css实际上是在我的应用程序中找到并使用的,所以唯一错误的是日志中的异常。我也以这种方式加载其他资源(图像,字体等),并且在这些情况下没有例外记录。在Felix OSGI中使用JavaFX中的自定义css时记录的异常
我加载像这样的CSS:
val cssResource = getClass.getResource("/com/openaf/browser/gui/resources/openaf.css").toExternalForm
println("CSS Resource: " + cssResource)
println("")
scene.getStylesheets.add(cssResource)
,你可以从输出中看到的,它被发现(我不知道为什么在例外它说* *的.bss但也许这就是菲利克斯做一些内部包重命名。
有谁知道为什么被记录此异常和/或如何摆脱它?
CSS Resource: bundle://21.57:1/com/openaf/browser/gui/resources/openaf.css
java.io.IOException: Resource does not exist: bundle://21.57:1/com/openaf/browser/gui/resources/openaf.bss
java.io.IOException: Resource does not exist: bundle://21.57:1/com/openaf/browser/gui/resources/openaf.bss
at org.apache.felix.framework.URLHandlersBundleURLConnection.<init>(URLHandlersBundleURLConnection.java:136)
at org.apache.felix.framework.URLHandlersBundleStreamHandler.openConnection(URLHandlersBundleStreamHandler.java:64)
at java.net.URL.openConnection(URL.java:971)
at java.net.URL.openStream(URL.java:1037)
at com.sun.javafx.css.Stylesheet.loadBinary(Stylesheet.java:201)
at com.sun.javafx.css.StyleManager.loadStylesheetUnPrivileged(StyleManager.java:572)
at com.sun.javafx.css.StyleManager.loadStylesheet(StyleManager.java:411)
at com.sun.javafx.css.StyleManager.updateStylesheets(StyleManager.java:858)
at javafx.stage.Window.impl_visibleChanging(Window.java:818)
at javafx.stage.Stage.impl_visibleChanging(Stage.java:922)
at javafx.stage.Window$10.invalidated(Window.java:689)
at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:127)
at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:161)
at javafx.stage.Window.setShowing(Window.java:782)
at javafx.stage.Window.show(Window.java:797)
at javafx.stage.Stage.show(Stage.java:229)
at com.openaf.browser.gui.BrowserStageManager.createStage(BrowserStageManager.scala:64)
at com.openaf.browser.gui.BrowserStageManager.start(BrowserStageManager.scala:41)
at com.openaf.browser.gui.BrowserBundleActivator$$anonfun$startUp$2.apply$mcV$sp(BrowserBundleActivator.scala:32)
at com.openaf.browser.gui.utils.BrowserUtils$$anon$1.run(BrowserUtils.scala:48)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
Equinox-OSGi从bundle中加载CSS文件没有问题 - Felix可能没有设置URL-Resolver吗? – tomsontom 2013-03-03 19:20:06
谢谢,使用-Dbinary.css = false标志按预期工作。那么javafx会尝试加载二进制文件,以及何时它不能回退到文本css?并通过尝试加载二进制felix无法找到它,所以输出异常? – Boomah 2013-03-03 19:48:20
tomsontom,我没有做任何特别的URL解析器 - 我也加载其他资源就好了。 – Boomah 2013-03-03 19:49:56