Я занимаюсь разработкой Java-проекта с использованием IntelliJ и Maven, но у меня возникают проблемы с загрузкой и анализом файлов Json. Я использую Gson для разбора.
Это фрагмент кода, который вызывает проблемы:
public void parseSomething() {
Gson gson = new GsonBuilder().create();
//The Json file contains an array of objects, and I need to put it into a Vector
Type listType = new TypeToken<List<MyClass>>(){}.getType();
List<MyClass> something = new Vector<>();
try(Reader file = new FileReader("dir/myFile.json")){
something = gson.fromJson(file, listType);
} catch (IOException e) {
e.printStackTrace();
}
this.something = something; //this sets the attribute of the class
}
Я использую этот метод для его отладки:
public static void main( String[] args ) {
MyClass myClass = new MyClass();
myClass.parseSomething();
String debug = something.toString(); //I've already implemented a custom toString
System.out.println(debug);
}
A FileNotFoundException
получает бросок в try(Reader file = new FileReader("dir/myFile.json"))
.
Если мои предположения верны, программа даже не доходит до разбора, потому что не может найти файл.
То, что я пытался:
- Использование абсолютного пути (и небольшие вариации относительного, такие как
src/main/resources/dir/myFile.json
и resources/dir/myFile.json
...).
- Установка корневого ресурса для обоих intelliJ и Maven.
- Использование других способов чтения файла, таких как:
- ClassLoader
String fileName = "dir/myFile.json";
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
- InputStreamReader (я получаю
NullPointerException
таким образом)
try(Reader reader = new InputStreamReader(myClass.class.getResourceAsStream("dir/myFile.json"))){...}
У вас есть идея, почему файл не может быть найден? Есть ли другие способы, с помощью которых я могу загрузить его?