Изображения, недоступные приложению 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")