Vaadin Spring 应用程序无法访问图像

images not accessible by Vaadin Spring Application

在此处给出的示例中:

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

图像文件夹放在应用程序的 WEB-INF 目录中。

在我的 Vaadin Spring 应用程序中,我没有 WEB-INF 目录,所以我将图像文件夹放在 "resources" 文件夹中。 "src/main/resources" 和 "target" 内部的文件夹结构如下所示:

问题是我的应用程序无法访问那里的图像。我总是得到相同的 "File not found" 异常。

我尝试了不同的路径描述,其中包括:

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}/中并使用主题资源:

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

或者,将您的资源放入 src/main/resources/,然后从类路径访问它:

getClass().getResourceAsStream("/images/image.png")