![](/img/trans.png)
[英]Java won't open the correct file, constantly returns the File Not Found Exception even when using the absolute path
[英]FXML file won't load even when file path is correct
我正在嘗試加載FXML文件:
URL url = getClass().getClassLoader().getResource("/frontEnd/fxml/ModeScreen.fxml");
try {
this.value = FXMLLoader.load(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是當我跑步時,我得到:
NullPointerException: Location is required
我的fxml文件的路徑是:
src/frontEnd/fxml/ModeScreen.fxml
而我的班級文件的路徑是:
src/frontEnd/ModeScreen.java
this.value extends AnchorPane
,FXML文件的根是AnchorPane。
我檢查並確保所有這些文件都在bin文件夾中,並且既不在jar文件中也不在Eclipse中運行
我也嘗試使用以下路徑:
frontEnd/fxml/ModeScreen.fxml
../frontEnd/fxml/ModeScreen.fxml
src/frontEnd/fxml/ModeScreen.fxml
/src/frontEnd/fxml/ModeScreen.fxml
/fxml/ModeScreen.fxml
fxml/ModeScreen.fxml
我也嘗試過使用getResourceAsStream.toString
文件結構如下:
bin
application
Main
frontEnd
controllers
fxml<---<all the fxml files are in here. I checked too.>
ModeScreen.class
我一定做錯了一些小事情。
這里的問題是,當您已經在使用ClassLoader
的getResource()
時,您將附加一個/
。
您絕對不要在ClassLoader路徑的開頭使用/
,因為所有ClassLoader paths are absolute
。
絕對可以將Class
的getResource()
與以/
開頭的URL一起使用,因為在將其委托給類加載器之前,它會創建一個絕對URL。
從JavaDocs:
在委派之前,使用以下算法從給定資源名稱構造絕對資源名稱:
- 如果名稱以'/'('\\ u002f')開頭,則資源的絕對名稱是名稱中'/'之后的部分。
以下是有效的網址:
使用ClassLoader:
URL url = getClass().getClassLoader().getResource("frontEnd/fxml/ModeScreen.fxml");
使用類:
URL url = getClass().getResource("/frontEnd/fxml/ModeScreen.fxml");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.