상대 경로를 사용하여 주 방법에서 내 리소스 폴더의 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();
읽기는 입력 스트림을 사용하여 파일을 읽는 데이터베이스의 메소드를 호출합니다.
java.io.FileNotFoundException : 파일 :
public static Database read(String filename) throws FileNotFoundException { InputStream is = new FileInputStream(filename); Reader reader = new InputStreamReader(is); return gson.fromJson(reader, Database.class); }
내가 점점 오전 오류는 다음과 /Users/timpelser/IdeaProjects/TurfApp/target/classes/JSON/inhabitants.json java.io.FileInputStream.open (네이티브 메서드)에서 java.io.FileInputStream.open (FileInputStream.java:195)에서 java.io.FileInputStream. (FileInputStream.java:138)에서 java.io.FileInputStream.open0 (해당 파일 또는 디렉토리 없음) 에서 java.io.FileInputStream. (FileInputStream.java:93) 에 Core.Database.re 광고 Main.main에서 (Database.java:22) (Main.java:51) ... 11 I이 무엇인지 모른다 있도록 디렉토리에있는 파일이
/Users/timpelser/IdeaProjects/TurfApp/target/classes/JSON/inhabitants.json
그러나 존재
더 잘못되어가는. 여기
내 폴더 구조 (메이븐 기본 구조)입니다 :
여전히 수 나를 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
목적을 달성하지 못했고 파일을 리소스 폴더에 추가했습니다. 아티팩트를 빌드 할 때 타겟 폴더에 추가했습니다. –