В documentation for DocumentBuilder.parse(String) состоянии:
PARSE содержания данного URI в качестве документа XML и возвращает новый объект DOM Document
.
"characters.xml"
технически допустимый URI, но это относительный URI, и нет никакой базы URI, по которому можно решить.
Чтобы прочитать файл внутри .jar, вы используете Class.getResource или Class.getResourceAsStream. Примером может быть:
Document doc;
try (InputStream stream = Controller.class.getResourceAsStream("characters.xml")) {
doc = builder.parse(stream);
}
В качестве альтернативы, вы можете преобразовать ресурс в URI:
Document doc = builder.parse(
Controller.class.getResource("characters.xml").toString());
Обратите внимание, что оба Class.getResource и Class.getResourceAsStream возвращают нулевое значение, если аргумент не является путь существующий вход в банку. Вам нужно будет переместить characters.xml в каталог src \ sample. Вы можете проверить, что файл .jar содержит characters.xml, изучив его в области «Файлы» вашей среды IDE.
Не помещайте изображения текста в свой вопрос. Скопируйте и вставьте текст напрямую. Если это код, отступьте его на четыре пробела, чтобы он появился в блоке кода. – VGR
а как насчет структуры? который я не могу просто вставить его в виде текста? – Syarx
Структура в порядке, как изображение. Текст будет лучше, если вы знаете правильные символы Юникода (например, «▼», «▶» и «└»), и если вы готовы потратить время на его ввод. – VGR