簡體   English   中英

為什么在Tomcat的WEB-INF / classes目錄中看不到圖像?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM