[英]Why can't I see an image inside the WEB-INF/classes directory in Tomcat?
大家好,我正在学习Vaadin for Java,我创建了一个项目,并将其作为.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 Class Loader从类路径中加载资源。 通常,相关的类路径条目是Web应用程序下的WEB-INF / classes文件夹,Java编译应在该文件夹中编译Java类并从源树复制其他文件。
下面的单行示例从应用程序包加载图像资源,并将其显示在Image组件中。
layout.addComponent(new Image(null,
new ClassResource("smiley.jpg")));
为什么在我的情况下不起作用? 我该怎么办?
感谢您的关注!
Vaadin之书可能不太准确。 ClassResource
构造函数javadoc写道:
创建一个新的应用程序资源实例。 资源ID相对于使用此资源(如果使用LegacyWindow,则为应用程序)的组件的UI的位置。
所以,你应该把image.png
旁边的ImgUI.class
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.