Изображения, недоступные приложению Vaadin Spring

В приведенном здесь примере:

https://vaadin.com/docs/framework/application/application-resources.html

папка images помещается в каталог приложения WEB-INF.

В моем приложении Vaadin Spring у меня нет каталога WEB-INF, поэтому я поместил папку с изображениями в папку "resources". Вот как выглядит структура папок внутри "src / main / resources" и внутри "target":

Проблема в том, что мое приложение не может получить доступ к изображениям там. Я всегда получаю одно и то же исключение "Файл не найден".

Я опробовал различные описания пути, среди прочего, следующее:

VaadinService.getCurrent().getBaseDirectory().getAbsolutePath() + "images/pic.png"

VaadinService.getCurrent().getBaseDirectory().getAbsolutePath() + "/classes/images/pic.png"

VaadinService.getCurrent().getBaseDirectory().getAbsolutePath() + "/target/classes/images/pic.png"

VaadinService.getCurrent().getBaseDirectory().getAbsolutePath() + "/applicationName/target/classes/images/pic.png"

... ничего не сработало!!

Как я могу сделать эти изображения доступными для моего приложения Vaadin Spring?

1 ответ

Решение

Пример, на который вы ссылаетесь, использует FileResource, Это не будет работать с jar-упакованными ресурсами.

Желательно, чтобы вы могли поместить свои изображения в src/main/resources/VAADIN/themes/{theme}/ и использовать ThemeResource:

// Image as a file resource
FileResource resource = new ThemeResource("images/image.png");

В качестве альтернативы, поместите ваш ресурс в src/main/resources/ и затем получите к нему доступ из classpath:

getClass().getResourceAsStream("/images/image.png")
Другие вопросы по тегам