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

相关推荐
Peregrine912 小时前
C++ - > 类和对象
java·c++·算法
2501_9339232512 小时前
SpringCloud组件:Eureka服务注册与发现
java·开发语言·后端·spring cloud·eureka
Wang's Blog12 小时前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 消息转换器
java·中间件·java-rabbitmq
Re_zero13 小时前
一次 SSE 断流排查:PrintWriter 吞掉了我的 IOException
java·后端
我是人✓13 小时前
Java核心语法:作用域、循环与大数值处理
java·开发语言·后端
夜之眷属13 小时前
PriorityQueue:for-each 遍历和 poll 取出,顺序一样吗?
java·服务器·数据结构·后端·算法
蜗牛互联网14 小时前
Java标准HTTP调用多模态模型的票据抽取前置校验
java·人工智能·python·http
工具派14 小时前
Agent 不是玄学:用 Java 状态机思维理解 LangGraph
java·人工智能·python
十年Java程序媛14 小时前
String / StringBuilder / StringBuffer|别再乱用字符串拼接,底层原理一次讲透
java·spring boot·后端
傲世仙尊14 小时前
类和对象中-构造函数与析构函数把初始化清理自动化
java·运维·自动化