在springboot中使用freemarker模板导出word,在本地运行就OK,生产上部署在docker就会报错。

出现了URLTemplateSource.lastModified(URLTemplateSource.java:89),在docker中运行就会出现这个问题。如下图

img

环境没搭好

没找到模板文件吧?明显报 null 异常了

问题所在:你的获取url资源有问题,按照如下改动:


<dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.7</version>
</dependency>
//1.获取文件流
        InputStream stream = getClass().getClassLoader().getResourceAsStream("static/SignOut.png");
        //2.获取临时文件
        File file= new File("static/SignOut.png");
        try {
            //将读取到的类容存储到临时文件中,后面就可以用这个临时文件访问了
            FileUtils.copyInputStreamToFile(stream, file);
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        //3.这个时候再去获取资源的文件路径 就可以正常获取了
        String filePath = file.getAbsolutePath();
```java


```

先看生产扫描静态文件的策略会不会略过模板文件。
打包后的static目录下检查一下模板文件在不在,也有可能是打包的问题