банке не удается найти файл JSON - PullRequest
0 голосов
/ 13 января 2019

Я построил банку из своего проекта. В этом проекте есть папка File, содержащая разные файлы JSON. enter image description here

Я пытался читать файлы 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;
    }
}

1 Ответ

0 голосов
/ 13 января 2019

Это просто не будет работать, когда вы на самом деле будете распространять свое приложение. Если вы хотите обслуживать файлы, которые будут поставляться с вашим приложением, сделайте эти файлы ресурсом. https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html

В вашем случае самым простым способом было бы поместить Files в src директорию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...