Я построил банку из своего проекта. В этом проекте есть папка File, содержащая разные файлы JSON.
Я пытался читать файлы JSON, например:
public Status readStatus(){
Status status = new Status();
ObjectMapper mapper = new ObjectMapper();
try {
status = mapper.readValue(new FileInputStream(System.getProperty("user.dir")+ "/Files/Status.json"),
Status.class);
} catch (IOException e) {
e.printStackTrace();
}
return status;
}
Когда я запускаю файл jar, я получаю следующее исключение:
java.io.FileNotFoundException: \ Status.json (система не может найти указанный файл)
Я считаю, что проблема в том, что я использовал относительный путь для ссылки на файлы. На этом форуме я нашел разные решения, объясняющие, что я должен использовать метод this.getClass().getResourceAsStream(...)
, поэтому я изменил метод на:
public Status readStatus(){
Status status = new Status();
ObjectMapper mapper = new ObjectMapper();
try {
status = mapper.readValue(this.getClass().getResourceAsStream("/Status.json"),
Status.class);
} catch (IOException e) {
e.printStackTrace();
}
return status;
}
После этого я получил еще одно исключение:
com.fasterxml.jackson.databind.exc.MismatchedInputException: нет содержимого для сопоставления из-за конца ввода
в [Источник: НЕИЗВЕСТНО; строка: 1, столбец: 0]
Как правильно сослаться на файл, чтобы он был найден и прочитан без выброса InputException?
РЕДАКТИРОВАТЬ: JSON-файл:
{"changeTires":true}
Класс картирования:
public class Status {
public boolean changeTires = false;
public boolean isChangeTires() {
return changeTires;
}
public void setChangeTires(boolean changeTires) {
this.changeTires = changeTires;
}
}