【发布时间】:2013-12-17 00:58:16
【问题描述】:
我有一个使用javaxf WebEngine 的Maven 项目。我先通过安装e(fx)clipse包含javafx,就可以正常使用了。
现在我想将我的程序编译成一个包含所有依赖项的大 .jar 文件。我首先在我的 JDK (1.7.0_45) 中使用了 <scope>system</scope> 并链接到 jfxrt.jar。我使用mvm package 编译我的程序,它适用于构建部分。
然后,感谢this SO answer,我在 maven 中安装了 jfxrt.jar,所以我有一个带有 maven 的 javafx-2.2.45.jar。
但是,当我运行我的程序以及实例化该特定 WebEngine 时,我遇到了这个错误:
INFO: com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged Could not find stylesheet: jar:file:/target/project-name-0.1.one-jar.jar!/lib/javafx-2.2.45.jar!/com/sun/javafx/scene/control/skin/caspian/caspian.css
SEVERE: javafx.scene.control.Control impl_processCSS The -fx-skin property has not been defined in CSS for ScrollBarThemeImpl$ScrollBarWidget@5919e0a8[styleClass=scroll-bar]
java.lang.NullPointerException
at com.sun.webpane.sg.theme.ScrollBarThemeImpl.initializeThickness(ScrollBarThemeImpl.java:341)
at com.sun.webpane.sg.theme.ScrollBarThemeImpl.access$100(ScrollBarThemeImpl.java:27)
at com.sun.webpane.sg.theme.ScrollBarThemeImpl$ScrollBarWidget.impl_updatePG(ScrollBarThemeImpl.java:50)
at javafx.scene.Node.impl_syncPGNode(Node.java:425)
at javafx.scene.Scene$ScenePulseListener.syncAll(Scene.java:2106)
at javafx.scene.Scene$ScenePulseListener.syncAll(Scene.java:2115)
at javafx.scene.Scene$ScenePulseListener.syncAll(Scene.java:2115)
at javafx.scene.Scene$ScenePulseListener.synchronizeSceneNodes(Scene.java:2082)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2193)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:363)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:463)
at com.sun.javafx.tk.quantum.QuantumToolkit$9.run(QuantumToolkit.java:332)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
我打开这个 jar 并能够找到它应该在的 caspian.css 文件。
我应该怎么做才能在我的“大编译 jar”中使用我的 WebEngine?我不在乎解决方案是否是一个快速、肮脏的修复,例如将此 css 文件复制/粘贴到其他地方(我已经尝试过,但我可能错过了一些东西..)
【问题讨论】: