【发布时间】:2014-12-06 16:46:43
【问题描述】:
大家好,我正在学习 Java 的 Vaadin,我创建了一个项目并将其作为 .war 导出到 Tomcat webapps 文件夹。该项目位于此路径:
/usr/local/apache-tomcat/apache-tomcat-8.0.15/webapps/project.war
现在我已经重新启动了 Tomcat,并且在 webapps 文件夹中,.war 被解压到了 /usr/local/apache-tomcat/apache-tomcat-8.0.15/webapps/project.warproject 文件夹中。
我的问题是我有一个 Vaadin ClassResource,它应该指向 WEB-INF/classes 目录中的一个图像(正如他们在 Vaadin 书中所说的那样),该图像位于此路径:
/usr/local/apache-tomcat/apache-tomcat-8.0.15/webapps/project/WEB-INF/classes/image.png
但是没有显示出来……下面是UI类的代码:
public class ImgUI extends UI {
protected void init(VaadinRequest request) {
// initializing the layout object etc...
Resource r = new ClassResource("image.png"); // the image which is inside WEB-INF/classes dir
layout.addComponent(new Image("Class resource image", r));
}
}
我应该怎么做才能使用 ClassResource 显示图像?我知道还有其他方法(使用 ThemeResource 或 FileResource),但我想使用 ClassResource 并且正如 Vaadin 之书所说 -> https://vaadin.com/book/-/page/application.resources.html:
4.4.3。类加载器资源
ClassResource 允许从类路径加载资源 使用 Java 类加载器。通常,相关的类路径条目是 Web 应用程序下的 WEB-INF/classes 文件夹,其中 Java 编译应该编译 Java 类并从 源代码树。
下面的单行示例从 应用程序包并将其显示在 Image 组件中。
layout.addComponent(new Image(null,
new ClassResource("smiley.jpg")));
为什么在我的情况下它不起作用?我该怎么办?
感谢关注!
【问题讨论】: