Freemarker模板未找到异常[重复]
Posted
技术标签:
【中文标题】Freemarker模板未找到异常[重复]【英文标题】:Freemarker Template Not found Exception [duplicate] 【发布时间】:2015-09-04 07:29:12 【问题描述】:我的 freemarker 模板文件在 java 中找不到文件异常。 我搜索了所有链接,如 Random template not found with Freemarker 和 Freemarker template not found ,但没有任何帮助。
我正在使用 ftl 文件来设计电子邮件,这是我包含该模板的代码
Configuration cfg = new Configuration();
cfg.setClassForTemplateLoading(GenerateEmail.class, "");
Template template = cfg.getTemplate("email.ftl");
我的email.ftl
文件位于src/main/java folder
谁能帮我解决这个问题
【问题讨论】:
该文件不在该位置的类路径中,或者在您构建它时未将其添加到您的存档中。这就是您提到的两个问题的要点,它们是完全相同的问题解决方案。这是一个简单的问题,如果文件实际上正确地位于类路径上,则有很多关于在类路径上定位文件的答案。 但我没有得到我的答案,这就是为什么发布它 没有勺子喂养的答案,你必须自己弄清楚文件是否真的在类路径上,我们无权访问你的环境。这实际上与 freemarker 无关,它是一个在类路径问题上定位资源。src/main/java
文件夹意味着您正在使用 maven,您的文件应该在 src/main/resources
中。您需要的信息在副本的链接中。
问题是您使用""
作为setClassForTemplateLoading
的第二个参数,而不是"/"
。 ""
是一个相对路径,因此 FreeMarker 在 GenerateEmail
类的包中查找模板。请注意,这已记录在 JavaDoc 中。 (我无法将此作为答案发送,因为该问题已标记为重复。)
@jarrod 这是一个用户可能不想在类路径中查找的模板文件——它可能需要在无需重新部署应用程序的情况下进行编辑。我同意撤销重复标记。
【参考方案1】:
尝试将您的ftl
文件放在“WEB-INF/email/email.ftl”中,然后使用cfg.getTemplate("/email/email.ftl")
访问它。
更新:看看这个链接是否有帮助:http://www.vogella.com/tutorials/FreeMarker/article.html
祝你好运!
【讨论】:
不适合我:( 你在用弹簧吗?如果是,你配置了吗? 不,我没有使用弹簧以上是关于Freemarker模板未找到异常[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 java 中加载 freemarker 模板时出现 FileNotFoundException