Экспортированный JAR из Eclipse — файл класса и файл config.xml внутри jar — как использовать этот файл конфигурации в xx.class

Я пытаюсь настроить отчет об экстенте, используя файл config.xml. Все отлично работает при запуске из eclipse. У меня есть config.xml внутри папки ресурсов. Однако, когда я экспортирую как исполняемый JAR-файл, код дает сбой с NPE, так как не может найти файл config.xml. Я пробовал различные варианты, а также пробовал писать во временный файл, как показано ниже.

         ClassLoader classLoader = ClassLoader.getSystemClassLoader();
         InputStream resource = classLoader.getClass().getResourceAsStream(extentfileName);
         final File tempFile = File.createTempFile("extent-config", ".xml", new File("./"));
         System.out.println(tempFile.getAbsolutePath());
         tempFile.deleteOnExit();
         try (FileOutputStream out = new FileOutputStream(tempFile)) {
             IOUtils.copy(resource, out);}

В приведенном выше коде временный файл создается, но не имеет содержимого. Любая помощь высоко ценится

Ответ @MForm в ссылке помог разобраться

karthik110885 10.12.2020 14:51

Это работает для меня, но не идеально. String resource = "extent-config.xml"; InputStream input = MyClassName.class.getResourceAsStream("/resources/" + resource); String body = IOUtils.toString(input, StandardCharsets.UTF_8.name()); extenttempFile = File.createTempFile("extent-config", ".xml", new File("./")); extenttempFile.deleteOnExit(); try (FileOutputStream out = new FileOutputStream(extenttempFile)) { IOUtils.write(body, out);} report.loadConfig(extenttempFile);

karthik110885 10.12.2020 14:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку других ответов нет, обновление обходного пути, который я использовал в качестве ответа

Строковый ресурс = "extent-config.xml"; InputStream input = MyClassName.class.getResourceAsStream ("/resources/" + ресурс); Тело строки = IOUtils.toString(input, StandardCharsets.UTF_8.name());
extensiontempFile = File.createTempFile("extent-config", ".xml", новый файл("./")); extensiontempFile.deleteOnExit();
try (FileOutputStream out = new FileOutputStream(extenttempFile)) {IOUtils.write(body, out);} отчет.loadConfig(extenttempFile);

Другие вопросы по теме