[英]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的機制是在Class
或ClassLoader
上調用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.