Ваш файл в проекте называется «ресурсом», который будет объединен в результирующий jar
-файл.
В maven
проектах такие файлы находятся в специальной папке resources
(например, src/main/resources/testjson/jsonfile.json
), во многих других типах проектов эти файлы расположены непосредственно под java
файлами.
Поэтому вы не можете прочитать его с помощью FileReader
, поскольку он не будет обычным файлом, а будет заархивирован внутри файла jar
.
Все, что вам нужно сделать, это прочитать файл с this.getClass().getResourceAsStream("/testjson/jsonfile.json")
.
Ваш анализатор должен быть способен читать с InputStream
вместо Reader
.
Если нет, используйте InputStreamReader
с правильной кодировкой (JSON-файлы должны быть в формате UTF-8, но это зависит ...)
код:
try (InputStream is = this.getClass().getResourceAsStream("/testjson/jsonfile.json"); ) {
Object obj = parser.parse(is);
} catch (Exception ex) {
System.out.println("failed to read: "+ex.getMessage());
}
Код, если парсер не поддерживает InputStream
:
try (InputStream is = this.getClass().getResourceAsStream("/testjson/jsonfile.json");
Reader rd = new InputStreamReader(is, "UTF-8"); ) {
Object obj = parser.parse(rd);
} catch (Exception ex) {
System.out.println("failed to read: "+ex.getMessage());
}