相対パスを使用して、メインメソッドで自分のリソースフォルダから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();
読み取りは、入力ストリームを使用してファイルを読み取るデータベースのメソッドを呼び出します。
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 java.io.FileInputStream.open0(ネイティブ メソッド)、java.io.FileInputStream.open(FileInputStream.java:195)、 、java.io.FileInputStream(FileInputStream.java:138)のjava.io.FileInputStream.open0(そのようなファイルまたはディレクトリはありません) java.io.FileInputStream。(FileInputStream.java:93)at Core.Database.re私が何であるか見当がつかないのでMain.main(Main.java:51)... より11
の広告(Database.java:22)は、ディレクトリ内のファイル/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
私はそれを目的地ではしませんでした。ファイルをリソースフォルダに追加しました。アーティファクトをビルドするとターゲットフォルダに追加されました –