project
src/main/java
src/main/resources css & img
嗨以上是我的基於Maven的javafx應用程序結構。該應用程序不從可運行jar文件加載圖像。 例如-fx-background-image: url("../img/bg.PNG");
圖像不加載在javafx css從資源文件夾製作罐子時
Error loading image: jar:file:/D:/demo.jar!/img/top_bg.PNG
project
src/main/java
src/main/resources css & img
嗨以上是我的基於Maven的javafx應用程序結構。該應用程序不從可運行jar文件加載圖像。 例如-fx-background-image: url("../img/bg.PNG");
圖像不加載在javafx css從資源文件夾製作罐子時
Error loading image: jar:file:/D:/demo.jar!/img/top_bg.PNG
要檢查的事情
仔細檢查你正在尋找的文件實際上是在你嘗試運行jar文件,它位於你所期望的位置(運行jar tvf <yourjarfile.jar>
來檢查這一點)。
此外,仔細檢查以確保您沒有輸入錯誤,例如您提到url("../img/bg.PNG")
,但顯示的錯誤消息是top_bg.PNG
,因此錯誤消息中的文件名與您的文件名不匹配例。
此外,來自JavaFX CSS reference:
注意,對於內聯樣式,前導點段(例如
'..'
或'.'
)並解決由於路徑是在類路徑的根總是固定。
所以,這樣的表示法只能在樣式表中使用,而不能在內聯樣式中使用。
除了
通常情況下,試圖從一個jar文件檢索資源時,不使用..
。
與http:
和file:
協議不同,jar:
protocol不解析包含..
的相對父地址。
雖然我在本地做了一些測試,但JavaFX中的CSS實現似乎解決了源於jar文件資源的URL中的..
說明符,因此在這裏看起來不成問題。 CSS實現可能會預處理..
以將其從url中移除,然後將其傳遞到url加載器以加載資源。 (我檢查了JavaFX CSS解析器的源代碼,這就是它的作用,所以..
在源自jar的CSS樣式表中使用時很好)。