2013-12-17 82 views
0

我有一個Maven項目,我在其中使用javaxf WebEngine。我通過安裝e(fx)clipse第一次包括javafx,並且我能夠正常使用它。JavaFX無法加載caspian.css

現在我想將我的程序編譯成一個大的.jar文件,幷包含所有的依賴關係。我第一次使用<scope>system</scope>並鏈接到我的JDK(1.7.0_45)中的jfxrt.jar。我使用mvm package編譯我的程序,並且它適用於構建部分。

然後,我安裝了jfxrt.jar maven多虧了this SO answer所以我有一個javafx-2.2.45.jar與maven。

但是,我堅持這個錯誤,當我運行我的程序,當它涉及到實例化特定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 [email protected][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) 

我打開這個罐子,是能夠找到caspian.css文件,其中它應該是。

我應該怎麼做才能夠使用我的WebEngine在我的「大編罐子」?我不在乎,如果解決方案是一個快速,骯髒的修復,如複製/粘貼此Css文件的其他地方(我已經嘗試過,但我可能錯過了一些東西..)

回答

2

這不是一個好主意FX到你的罐子裏。你是否嘗試過使用http://www.zenjava.com/2013/07/01/javafx-maven-plugin-2-0-released/

+0

我沒有。在我看來,這是建立一個只JavaFX的應用,但在我的應用程序,這僅僅是應用程序的一部分。我會給它一個鏡頭。但是,我需要這個jar是一個獨立的,所以我需要javafx被捆綁到它... – thibaultcha

+0

好吧,它的工作!太好了,謝謝。有一點使用它的努力,但它完成了。你讓我的一天:) – thibaultcha

0

您可能需要申報像不包括JavaFX的進入尤伯杯罐子你的依賴。你也可以從創建這個罐子時不包含JavaFX的包,但我不認爲它的建議在理論上資源JavaFX的包下可能無法放置。

<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>javafx</artifactId> 
    <version>2.2.3</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>javafx</artifactId> 
    <version>2.2.3</version> 
    <optional>true</optional> 
</dependency> 

更新:該也是插件作爲@tomsontom提到一個JavaFX行家。

+0

的確,@ tomsontom的方式是去的。謝謝。 – thibaultcha