在此处给出的示例中:
https://vaadin.com/docs/framework/application/application-resources.html
images-folder放在应用程序的WEB-INF目录中。
在Vaadin Spring应用程序中,我没有WEB-INF目录,因此我将images文件夹放在“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应用程序可以访问这些图像?
最佳答案
您链接到的示例使用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")