Freemarker模板未找到异常。

3

我在Java中使用Freemarker模板文件时遇到了文件未找到异常。我已经搜索了所有类似于Random template not found with FreemarkerFreemarker template not found的链接,但是没有得到帮助。

我正在使用ftl文件设计电子邮件,以下是我的代码来包含该模板:

 Configuration cfg = new Configuration();
            cfg.setClassForTemplateLoading(GenerateEmail.class, "");
            Template template = cfg.getTemplate("email.ftl");

我的email.ftl文件位于src/main/java文件夹

有人能帮我吗?


文件不在类路径的该位置上,或者在构建时没有将其添加到您的归档文件中。这就是您提到的两个问题的要点,它们是完全相同的问题解决方案。这是一个简单的问题,有很多关于定位类路径上的文件的答案,如果文件实际上已经正确地在类路径上。 - user177800
但是我在那里没有得到我的答案,所以才发布了它。 - kirti
1
没有现成的答案,你必须自己找出文件是否实际上在类路径中,我们无法访问你的环境。这实际上与freemarker无关,它是一个定位类路径资源的问题src/main/java文件夹意味着你正在使用maven,你的文件应该在src/main/resources中。你需要的信息在重复链接中。 - user177800
1
问题在于您将setClassForTemplateLoading的第二个参数使用了""而不是"/"""是相对路径,因此FreeMarker会在GenerateEmail类的包中查找模板。请注意,这在JavaDoc中有记录。(由于该问题被标记为重复,我无法将其作为答案发送。) - ddekany
@jarrod 这是一个模板文件,用户可能不想在类路径上查找它 - 可能需要进行编辑而无需重新部署应用程序。我同意撤销重复标记。 - Phil Anderson
所以他们正在部署一个相对目录到 src/main/java 的应用程序?那不是他们所暗示的,他们使用的方法调用和路径暗示了类路径的根目录,如果他们想要查看文件系统,他们应该使用正确的在文件系统上查找的方法。如果他们的意图与他们所说的不同,他们需要更加详细地澄清问题,如果意图改变,问题将会重新开放。这就是系统设计的方式。 - user177800
1个回答

0

对我不起作用 :( - kirti
你正在使用Spring吗?如果是,你已经配置好了吗? - ASP
不,我没有使用Spring。 - kirti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接