问题原因:项目构建成Jar包后,resource目录下的文件并不是直接存储在文件系统中,是嵌套在Jar文件中(可以理解为 文件被压缩在jar包中)。
解决思路:拷贝Jar包中的文件到文件系统中。
//此处是为了获取Jar包部署所在文件夹
ApplicationHome applicationHome = new ApplicationHome(QuestionApplication.class);
String rootPath = applicationHome.getSource().getParentFile().toString();
//设置文件系统中的模板文件,,templateName是我方法传过来的,可以自定义
String configFilePath = rootPath + "/template/" + templateName;
//创建模板文件
File configFile = new File(configFilePath);
//判断模板文件是否存在
if (!configFile.exists()) {
try {
//读取jar包中的模板文件
InputStream in = ClassLoaderUtil.getClassLoader().getResourceAsStream("template/" + templateName);
//将jar包中的文件内容拷贝到文件系统中的模板文件中
FileUtils.copyInputStreamToFile(Objects.requireNonNull(in, "模板文件找不到"), configFile);
} catch (IOException e) {
e.printStackTrace();
}
}