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 在执行资源过滤时不需要对这些文件进行处理。

相关推荐
毕设源码-邱学长15 分钟前
【开题答辩全过程】以 个性化新闻推荐系统为例,包含答辩的问题和答案
java
a程序小傲22 分钟前
京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?
java·后端·python·面试
vx_bisheyuange34 分钟前
基于SpringBoot的老年一站式服务平台
java·spring boot·后端·毕业设计
计算机毕设VX:Fegn08951 小时前
计算机毕业设计|基于Java + vue水果商城系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·课程设计
TH_11 小时前
2、前台工程使用代理,请求后台失败
java
川贝枇杷膏cbppg1 小时前
DmServiceDMSERVER.log是干嘛的
java·服务器·数据库
无敌最俊朗@1 小时前
Qt 多线程编程: moveToThread 模式讲解
java·开发语言
程序员清风1 小时前
别卷模型了!上下文工程才是大模型应用的王道!
java·后端·面试
go__Ahead2 小时前
【Java】ThreadLocal源码解析
java
利剑 -~2 小时前
Spring AI Alibaba 1.1版本
java·人工智能·spring