簡體   English   中英

JavaFx圖像路徑

[英]JavaFx Images Path

我的Java類有問題。 實際上,代碼是正確的,但是如果我單擊運行按鈕,則圖像的路徑會引起異常。

static Image currentBackground = new Image("Snake/Images/background_options.png", true);

編譯器的消息是:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
    at javafx.scene.image.Image.validateUrl(Image.java:1100)
    at javafx.scene.image.Image.<init>(Image.java:624)
    at view.OptionsWindow.<clinit>(OptionsWindow.java:21)
    ... 3 more
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found
    at javafx.scene.image.Image.validateUrl(Image.java:1092)
    ... 5 more

流程以退出代碼1完成

有誰能夠幫助我?

Image構造函數期望使用URL規范,而不是文件系統路徑。 假設您將此映像捆綁為應用程序的一部分,則需要從與加載類相同的位置加載該映像:在最終部署中可能是jar文件,但在開發過程中可能是從文件系統加載。

獲取表示代表應用程序資源的URL的機制是在ClassClassLoader上調用getResource()

確切的執行方式取決於您的項目結構(未顯示),例如:

new Image(getClass().getResource("Snake/Images/background_options.png").toString(), true);

將從相對於當前類指定的資源中加載圖像,並且

new Image(getClass().getClassLoader().getResource("Snake/Images/background_options.png").toString(), true);

將從相對於類路徑指定的資源中加載圖像。

如果您傳遞了一個表示相對URL的String (即,一個沒有方案的String ,例如file:http:jar: ,則Image構造函數將在類路徑中搜索資源。 換一種說法

new Image("Snake/Images/background_options.png", true);

相當於

new Image(getClass().getClassLoader().getResource("Snake/Images/background_options.png").toString(), true);

這似乎有點違反直覺(至少對我而言),因此我更喜歡始終完全指定一個URL,或者視情況從getClass().getResource()File.toURI().toURL()檢索一個URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM