问题背景
在Spring Boot项目里整合Freemarker,目标是使用Freemarker模板文件生成代码。
模板在在resources/template里边明明有对应的xxx.ftl文件,但是却报错说没有找到该文件。
freemarker.template.TemplateNotFoundException: Template not found for name "xxx.ftl".
.......
产生问题原因
此时便要注意Maven生成的项目了。在target文件夹,即编译成功的文件夹里查看classes/template文件夹,便可以发现,模板文件并没有被加入到文件夹中,这就是问题产生的根源。
解决方法
-
Maven clean或直接删除后重新编译,看文件是否在classes对应的目录下生成。
-
直接手动将文件添加到对应的目录(不推荐)。
-
如果第一个方法不好使,在pom.xml使用如下设置,使Maven自动将java以外的文件放到target对应的文件夹里。
<resources> <resource> <directory>${basedir}/src/main/java</directory> <includes> <include>**/*.*</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> <filtering>false</filtering> </resource> </resources>注意:
Maven在默认情况下,如果没有指定resources,目前认为自动会将classpath下的src/main/java下的.class文件和src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。如果设定了resources,那么默认的就会失效,就会以指定的includes和excludes为准。

在SpringBoot项目中整合Freemarker时遇到模板文件找不到的问题,原因是模板文件未被正确编译并放入target/classes/template目录。解决方法包括:执行Maven clean后再编译,或者在pom.xml中配置资源过滤,确保非Java文件能被正确复制到目标目录。此外,手动添加文件到对应目录是不推荐的解决方案。
4120

被折叠的 条评论
为什么被折叠?



