[英]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.