我想在使用相對路徑的主要方法中從我的資源文件夾中獲取JSON文件。該代碼使用絕對路徑工作,但是一旦我從我想要的項目生成一個jar文件就會中斷。無法從資源文件夾中使用相對路徑獲取JSON文件
public static void main(String[] args) throws FileNotFoundException {
// Read in database
db = Database.read(Thread.currentThread().getContextClassLoader().getResource("JSON/inhabitants.json").toExternalForm());
names = db.getAllNames();
讀取調用數據庫中使用inputstream讀取文件的方法。
public static Database read(String filename) throws FileNotFoundException {
InputStream is = new FileInputStream(filename);
Reader reader = new InputStreamReader(is);
return gson.fromJson(reader, Database.class);
}
我得到的錯誤是:
java.io.FileNotFoundException: 文件:/Users/timpelser/IdeaProjects/TurfApp/target/classes/JSON/inhabitants.json (FileInputStream.java:138)中的java.io.FileInputStream.open0(原生 方法)上的java.io.FileInputStream.open(FileInputStream.java:195)在 java.io.FileInputStream。(FileInputStream.java:93)at Core.Database.re廣告(Database.java:22)在Main.main(Main.java:51)... 11多個
在目錄中的文件/Users/timpelser/IdeaProjects/TurfApp/target/classes/JSON/inhabitants.json
確實存在,但是,所以我不知道是什麼出錯了。
這裏是我的文件夾結構(Maven的基本結構):
是否有將仍能我來部署它作爲一個jar文件的解決方案?
EDIT(25/09):如果我使用的替代的getResource的getResourceAsStream,我收到以下錯誤:
Caused by: java.io.FileNotFoundException: [email protected] (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at Core.Database.read(Database.java:22)
at Main.main(Main.java:51)
... 11 more
僅供參考,爲什麼要將json文件放入目標文件夾?目標是建立文件夾,並且每當你做'mvn clean'時都會被刪除' – amicoderozer
我沒有故意這樣做,我只是將文件添加到資源文件夾,並且在構建工件時將它添加到目標文件夾 –