在此处给出的示例中:

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

images-folder放在应用程序的WEB-INF目录中。

在Vaadin Spring应用程序中,我没有WEB-INF目录,因此我将images文件夹放在“resources”文件夹中。这是“src/main/resources”内部和“target”内部的文件夹结构的样子:

java - Vaadin Spring应用程序无法访问的图像-LMLPHP

问题是我的应用程序无法访问那里的图像。我总是得到相同的“找不到文件”异常。

我尝试了以下不同的路径描述:

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应用程序可以访问这些图像?

最佳答案

您链接到的示例使用FileResource。它不能与jar打包的资源一起使用。

最好是,您可以将图像放入src/main/resources/VAADIN/themes/{theme}/并使用ThemeResource:

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

或者,将您的资源放在src/main/resources/中,然后从类路径访问它:
getClass().getResourceAsStream("/images/image.png")

10-05 23:08
查看更多