[英]Resources folder in a Java EE application
我正在開發一個簡單的郵件發件人作為Java EE應用程序。
項目結構如下:
要正確設置電子郵件內容,我需要讀取放在資源文件夾中的*.vm
文件,我應該將其作為路徑classpath:/templates/mail/*.vm
(與Spring一樣 )...但我的假設是錯誤!
哪個是正確的使用途徑?
我應該使用META-INF
文件夾嗎? 這個解決方案是否更符合java-ee ? 在那種情況下,我在哪里將META-INF
文件夾放在我的項目結構中?
更新:
我將項目打包為.war
,然后我將文件放入:
/src/main/webapp/WEB-INF/classes/templates/mail/
然后:
org.apache.velocity.Template t = myVelocityEngine.getTemplate("classpath:/templates/mail/account_to_confirm.vm",
"UTF-8");
盡管如此,應用程序在運行時返回錯誤:
Unable to find resource 'classpath:/templates/mail/account_to_confirm.vm'
我究竟做錯了什么?
只是為了更好地理解:
假設我想將這個應用程序部署為jar
(當然要刪除servlet類):在這種情況下,我是否應該編輯文件夾布局以便仍然使用相同的路徑進入源代碼?
如果可以,請使用Classloader.getResourceAsStream(“templates / mail / * .vm”); 或類似的getResourceAsURL方法。
如果沒有,請查看資源中的文件放在WAR中的哪個位置 。 在您的情況下,該文件應位於/ WEB-INF / classes / templates / mail中。
我認為問題是由前綴classpath:
你在哪里發現你必須使用它?
您可能會發現有用的理解如何初始化VelocityEngine
讀取在jar文件中加載速度模板以及如何在Velocity中配置資源 加載器 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.