大家好我正在學習Vaadin for Java,我創建了一個項目並將它作爲.war導出到Tomcat webapps文件夾。該項目位於此路徑:爲什麼我無法在Tomcat的WEB-INF/classes目錄中看到圖像?
/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")));
爲什麼在我的情況下,它不工作?我該怎麼辦?
感謝您的關注!
你的意思是在包內的ImgUI.class駐留在build/classes中? – tonix 2014-12-07 10:59:01
無論如何,我試圖把圖像放在'build/classes/com/example/projectWhereImgUI.classIsLocated /'中,但我看不到它,有沒有其他可能的解決方案?圖片的名稱是正確的,我已經檢查過了。 – tonix 2014-12-07 11:05:41
@ user3019105奇怪。在我的例子中,這兩個文件('ProgUI.class','image.png')在這裏:e:\ Work \ apache-tomcat-8.0.12 \ webapps \ my-project \ WEB-INF \ classes \ com \ myprog \ main \ base \並且它可以工作。 – Krayo 2014-12-07 11:35:17