ftl文件找不到—2

ftl文件找不到—2

# 具体遇到的问题

我是用的idea写的,然后sample1.ftl和FreemarkerSample1类是在同一个文件夹下,但是一直提示找不到ftl文件,怎么解决呢?

# 报错信息的截图

http://img1.sycdn.imooc.com//climg/5f9ab6a709ed507330080640.jpg

# 相关课程内容截图

目录截图:
http://img1.sycdn.imooc.com//climg/5f9ab69d0915498c05440864.jpg


# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

package freemarker;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;

public class FreemarkerSample1 {
public static void main(String[] args) throws IOException, TemplateException {
Configuration config=new Configuration(Configuration.VERSION_2_3_30);
config.setClassForTemplateLoading(FreemarkerSample1.class,"");
Template t=config.getTemplate("sample1.ftl");
Map data=new HashMap();
data.put("site","百度");
data.put("url","www.baidu.com");
t.process(data, new OutputStreamWriter(System.out));


}
}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,1、在同学贴出的目录结构中,这是一个maven结构的项目,默认的源代码目录下(src/main/java目录)的ftl等资源文件并不会在编译的时候直接加载到对应目录,会将对应类型的文件舍弃掉。

在这种项目中,一般都会把配置文件放到src/main/resources目录下,针对这个目录,maven的resources会对其进行单独的加载配置。

    ​2、同学如果想将src/main/java目录下的ftl编译后加载到编译后目录中,可以在pom.xml中增加如下配置

http://img1.sycdn.imooc.com//climg/5f9f70b009fb7cf206270420.jpg

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.imooc</groupId>
<artifactId>spring_ioc</artifactId> <!--项目名-->
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>spring_ioc Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency><!--引入jar包-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<build>
<finalName>spring_ioc</finalName>
<!-- 配置ftl文件在java目录下正常编译加载 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.ftl</include>
</includes>
</resource>
</resources>
</build>
</project>

    ​3、同学还可以直接将ftl文件写在resource目录下

http://img1.sycdn.imooc.com//climg/5f9f717409eb479e04960808.jpg


好帮手慕小脸 2020-11-01 19:12:20

同学你好,建议同学删除target目录,并重构一下项目

http://img1.sycdn.imooc.com//climg/5f9e97ab09eb6ef402710401.jpg

http://img1.sycdn.imooc.com//climg/5f9e98050993bc9e02790197.jpg

或重启项目再试试

  • 提问者 慕仰7217027 #1
    谢谢老师,rebuild项目是可以在target目录中同步.class文件,但是ftl文件却不会自动同步,必须要手动复制进去才可以。。。有什么办法可以让它自动添加进去吗。
    2020-11-01 23:27:31
好帮手慕阿满 2020-10-30 10:51:59

同学你好,这边测试同学的代码并没有什么问题,如:

http://img1.sycdn.imooc.com//climg/5f9b7e2a0970012110450509.jpg

建议同学在target文件下,查找是否存在对应的目录是否存在sample1.ftl文件,如果没有,建议同学删除target文件重新运行再试试,或者复制文件放到target文件下。

http://img1.sycdn.imooc.com//climg/5f9b7e3a09c68e6b02660062.jpg

祝:学习愉快~

  • 提问者 慕仰7217027 #1
    谢谢老师,确实是和target文件夹有关系。但是我发现ftl文件必须要手动复制进去才行,但是java类文件就会自动在target文件夹下生成。有没有办法能让ftl文件也在target文件夹里同步呢
    2020-11-01 18:46:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师