Не удалось загрузить ресурсы в исполняемую банку - PullRequest
0 голосов
/ 08 мая 2020

Мой код выполняется в Eclipse, как ожидалось, но когда я попытался экспортировать его в исполняемую банку, он перестал загружать ресурсы. Я просмотрел здесь множество примеров, но не мог понять, что я сделал не так. Я просмотрел содержимое банки, и все файлы ресурсов там. Иерархия в банке следующая:

/src/code
/resources files

В проекте Eclipse иерархия

/src/classes
/resources/resource files

При запуске программы у меня есть класс ResourceLoader, загружающий все ресурсы, которые мне понадобятся. Поскольку у меня так много файлов ресурсов, из которых я извлекаю, я использовал следующий метод в коде:

private static Scanner loadScanner(String fileName, ClassLoader classLoader) throws IOException, NullPointerException {
    File file;      
    Scanner sc;

    try { //to load the resource file
        file = new File(classLoader.getResource(fileName).getFile());

    } catch (NullPointerException npe) {
        throw new NullPointerException("File " + fileName + " not found in ResourceLoader.loadScanner()");
    }
    sc = new Scanner(file);
    return sc;
}

Я вызываю метод примерно так:

String fileName = "example.csv";
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
sc = loadScanner(fileName,classLoader);

Сообщение об ошибке Я получаю:

file:\C:\...\myjar.jar!\example.csv (The filename, directory name, or volume label syntax is incorrect)
Exception in thread "main" java.lang.NullPointerException

Я предполагаю, что код jar ищет папку ресурсов, а ее там нет. Как мне изменить свой код или спецификации проекта / jar, чтобы он работал так, как я ожидал? Ценю любую помощь.

Кроме того, в образовательных целях файл jar, кажется, подавляет исключения ...? Если он не может найти файл ресурсов, то почему мой NullPointerException не перехватывает триггер?

...