【发布时间】: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 这是一个用户可能不想在类路径中查找的模板文件——它可能需要在无需重新部署应用程序的情况下进行编辑。我同意撤销重复标记。
标签: java maven classpath freemarker