项目场景:
在项目中使用二进制文件(非文本文件),如Excel,Jasper,进行模板导出
问题描述
在项目中使用二进制文件进行模板导出功能,出现文件损坏的情况
如使用JasperReports的 .jasper
二进制文件:
java.io.StreamCorruptedException:invalid stream header: EFBFBDEF
或者
Error loading object from InputStream.
原因分析:
经过多方百度,发现项目编译
的时候Maven
会对项目的资源进行压缩
。
解决方案:
在项目的POM文件中添加如下:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<!--不进行文件过滤,即不进行文件压缩-->
<filtering>false</filtering>
</resource>
</resources>
</build>
或者可以这样:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<version>2.6</version>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<!--不进行过滤的扩展名-->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>