Загрузка PNG-файла из пути к классу, упакованного в файл WAR

#java #spring #maven #spring-boot #jhipster

#java #spring #maven #весенняя загрузка #jhipster

Вопрос:

Я пытаюсь загрузить PNG-файл, упакованный в мой war-файл, чтобы я мог встроить его в электронное письмо, но, хоть убейте, я не могу правильно определить пути для получения моего входного потока. При создании экземпляра я получаю ошибку «InputStream не должен быть нулевым».

Структура проекта:

 src
|
---main
   |
   ---java
   |   |
   |   ---com.company.team.app_name
   |      |
   |      ---service
   |         |
   |         mailservice.java
   |
   ---resources
      |
      ---content
         |
         ---images
            |
            ---logo.png
  

пути в файле war:

 WEB-INF/classes/com/company/team/app_name/service/MailService.class
...
content/images/logo.png
  

код почтовой службы (в конструкторе класса):

 this.logoBytes = new InputStreamResource(this.getClass()
                                         .getClassLoader()
                                         .getResourceAsStream("/content/images/logo.png"));
  

Ответ №1:

Использовать ResourceUtils из org.springframework.util.ResourceUtils ;

 try {
        File file = ResourceUtils.getFile("classpath:content/images/logo.png")
        byte[] logoBytes = Files.readAllBytes(file.toPath());
    } catch (IOException e) {
        e.printStackTrace();
    }