我寫簡單的應用程序下找到資源文件和我有點失去了 - 這裏是處理:不能Maven的
項目結構如下:
ProjectApp
|-- pom.xml
`-- .idea
`-- src
-- main
|-- java
| `-- myapp
| |-- components
| | <some files>
| |-- controllers
| | <some files>
| |-- repositories
| | <some files>
| |-- Main.java
`-- resources
|-- database
| -- Data.csv
`-- fxml
-- Scene.fxml
正如你可以看到的資源文件夾我有2個子文件夾,其中一個是針對fxmls的另一個數據(這個應用程序是簡單的JavaFX應用程序)。 現在,這裏的問題是:
代碼我使用的加載場景我使用的加載數據(我用opencsv庫)
String DATA_PATH = "database/ClientData.csv";
ClassLoader classLoader = getClass().getClassLoader();
File dataFile = new File(classLoader.getResource(DATA_PATH).getFile());
CSVReader reader = new CSVReader(new FileReader(clientDataFile));
String SCENE_PATH = "/fxml/Scene.fxml";
Parent root = FXMLLoader.load(getClass().getResource(SCENE_PATH));
代碼我希望我提供這裏有足夠的上下文,如果沒有,請讓我知道,我會編輯(pom.xml是非常基本的,沒有什麼幻想)。現在,這個工程的IntelliJ下,但是當我嘗試使用Maven的運行,如:
mvn clean package
java -cp ./target/ProjectApp.jar myapp.Main
從ProjectApp目錄,應用程序運行,但我得到FileNotFoundException異常(它加載FXML文件,但沒有CSV文件 - 我得到工作應用程序,但無法訪問數據)。另外,爲什麼在訪問fxml文件時,我必須在路徑的開始處提供(如果不是NullPointerException)「/」,但是當我訪問csv文件時,我不能這麼做(因此路徑「/database/ClientData.csv」導致空指針異常)?
@EDIT
其實問題似乎是與包裝 - 當我打包的應用程序jar文件,它增加了感嘆號的路徑,這樣的路徑是不正確的(或至少我是這麼認爲的)。
謝謝,這解釋了很多。但是,如果路徑被正確聲明 - 並且它使用IDE - 爲什麼當我嘗試使用maven手動運行時它不工作? – 3michalzak
由於Eclipse和其他IDE實現自定義類加載器在運行時從項目中獲取資源,並且適用於您:) – mhasan
所以...我得到的那個是錯誤的,但是因爲我有一些自定義類加載器IntelliJ,工作?我的怎麼了? – 3michalzak