Я использую метод для динамического генерирования файлов XML для исследовательского проекта, они помещаются в загрузчик, который читает из пути к файлу, я не имею никакого контроля над тем, как загрузчик обрабатывает вещи (в противном случае я бы передать внутреннее представление XML вместо манипуляций с временными файлами), я использую этот код для сохранения файла:
File outputs = File.createTempFile("lvlFile", ".tmp.xml");
FileWriter fw = new FileWriter(outputs);
fw.write(el.asXML());
fw.close();
// filenames is my list of file paths which gets returned and passed around
filenames.add(outputs.getAbsolutePath());
Теперь я уверен, что данный файл записывается напрямую. Если я печатаю output.getAbsolutePath () и перехожу туда через терминал для проверки файлов, все генерируется и записывается правильно, поэтому все правильно в файловой системе. Тем не менее, этот код:
URL url = this.getClass().getClassLoader().getResource(_levelFile);
Где _levelFile - одно из моих имен файлов, сгенерированных выше, url будет нулевым. Путь не поврежден или что-то еще, печать проверяет, что _levelFile указывает на правильный путь. Тот же код успешно выполнен для других файлов. Кроме того, эта ошибка, похоже, не связана с тем, использую ли я getPath (), getCanonicalPath () или getAbsolutePath (), дальнейшая установка output.isReadable (true) ничего не делает.
Есть идеи? Пожалуйста, не предлагайте альтернативы структуре url = url =, я не имею никакого контроля над этим кодом *, я обязан изменить свой код так, чтобы URL был установлен правильно.
(*) По крайней мере без ЗНАЧИТЕЛЬНЫХ усилий переписать большую часть фреймворка, с которым я работаю, даже при том, что текущий код успешен во всех других случаях.
Edit:
Опять же, я не могу использовать альтернативу URL-коду, это часть загрузчика, к которой я не могу прикоснуться. Кроме того, загрузка завершается неудачно, даже если я задаю путь к временному файлу в том же каталоге, из которого поступают мои успешно загруженные файлы.