maven jar包二进制文件 invalid stream header: EFBFBDEF 的错误

背景:

将jasper模板文件导入jar包后,生成文件报错

复制代码
 org.springframework.core.io.Resource resource = new ClassPathResource("/template/XXXX.jasper");
                jasperPrint = JasperFillManager.fillReport(resource.getInputStream(), paramentMap, new JREmptyDataSource());

报错内容: invalid stream header: EFBFBDEF

错误原因:

maven 打包时候,把二进制文件给损坏了,maven 打包时会用utf-8编码读取文件。所以遇到打包二进制文件,就会破坏文件内容,导致无法使用。打包二进制文件时,无效编码会自动替换成ef bf bd。

解决办法

复制代码
  <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>jrxml</nonFilteredFileExtension>
                        <nonFilteredFileExtension>jasper</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>

nonFilteredFileExtensions 是 Apache Maven 的一个 POM 构建选项,用于通过指定一组文件后缀名,告诉 Maven 在执行资源过滤时不需要对这些文件进行处理。

相关推荐
遥远_3 分钟前
Java微服务无损发布生产案例
java·spring·微服务·优雅停机·java微服务无损发布
苹果醋37 分钟前
学习札记-Java8系列-1-Java8新特性简介&为什么要学习Java8
java·运维·spring boot·mysql·nginx
武子康16 分钟前
Java-159 MongoDB 副本集容器化 10 分钟速查卡|keyfile + –auth + 幂等 init 附 docker-compose
java·数据库·mongodb·docker·性能优化·nosql·1024程序员节
m0_7482336423 分钟前
C++ 模板初阶:从函数重载到泛型编程的优雅过渡
java·c++·算法·1024程序员节
以己之38 分钟前
11.盛最多水的容器
java·算法·双指针·1024程序员节
摇滚侠42 分钟前
全面掌握PostgreSQL关系型数据库,设置远程连接,笔记05,笔记06
java·数据库·笔记·postgresql
shepherd1261 小时前
破局延时任务(上):为什么选择Spring Boot + DelayQueue来自研分布式延时队列组件?
java·spring boot·后端·1024程序员节
机灵猫1 小时前
微服务中的服务熔断、降级与限流
java·数据库·微服务
雨夜之寂2 小时前
第一章-第三节-Java开发环境配置
java·后端
郑清2 小时前
Spring AI Alibaba 10分钟快速入门
java·人工智能·后端·ai·1024程序员节·springaialibaba