How do I read a resource file from a Java jar file?
Как мне прочитать файл ресурсов из файла Java jar?
Я пытаюсь получить доступ к XML-файлу внутри файла jar из отдельного jar, который работает как настольное приложение. Я могу получить URL-адрес нужного мне файла, но когда я передаю его в программу чтения файлов (в виде строки) Я получаю исключение FileNotFoundException, в котором говорится: "Синтаксис имени файла, каталога или метки тома неверен".
Для справки, у меня нет проблем с чтением ресурсов изображений из того же jar, передавая URL-адрес конструктору ImageIcon. Кажется, это указывает на то, что метод, который я использую для получения URL-адреса, правильный.
Вы не говорите, является ли это настольным компьютером или веб-приложением. Я бы использовал getResourceAsStream() метод из соответствующего загрузчика классов, если это рабочий стол, или контекст, если это веб-приложение.
Ответ 3
Похоже, что вы используете URL.toString результат в качестве аргумента FileReader конструктора. URL.toString немного сломан, и вместо него обычно следует использовать url.toURI().toString(). В любом случае строка не является путем к файлу.
Вместо этого вы должны либо:
Передайте URL в ServicesLoader и позвольте ему вызвать openStream или аналогичный.
Используйте Class.getResourceAsStream и просто передайте поток, возможно, внутри InputSource. (Не забудьте проверить наличие нулей, поскольку API немного запутан.)
Ответ 4
Проблема заключалась в том, что я зашел слишком далеко в вызове метода parse XmlReader . Метод parse принимает InputSource , поэтому не было причин даже использовать FileReader. Меняем последнюю строку приведенного выше кода на