背景:
SpringBoot项目,使用aspose.diagram操作Visio,并且使用了模具文件,并将其放在了resource下面
代码:
//读取resource下面的文件,这种方法在linux环境上面依然可以使用
Resource resource1 = new ClassPathResource("basic.vss");
InputStream stream = resource1.getInputStream();
Diagram diagram = new Diagram(stream);
执行后报错:com.aspose.diagram.afr: Unexcepted eof.
解决思路:
1.查看target目录下classes目录,我们的basic.vss文件是不是加载到了classes下面,已经加载
2.打开这个文件,发现Visio提示错误,并无法打开
3.查看原文件和classes下面的文件的大小不同,classes下面的文件比原文件大
4.定位到问题:项目打包时修改了我们的文件
解决方法:
打开我们的pom文件,找到build标签下面的resources标签,如果没有则新增,具体如下:
<build>
<defaultGoal>spring-boot:run</defaultGoal>
<resources>
<!--如果你的代码里面有设置filtering的资源为true,那么你需要先在这个里面进行排除exclude,之后新增一个filtering为false的,将我们的文件include进去即可-->
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<excludes>
<exclude>**/basic.vss</exclude>
</excludes>
<filtering>true</filtering>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/basic.vss</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
再次执行上面的代码,即可正常执行。