You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SBT Assembly生成Jar中Class文件魔数异常(0xEFBFBD替代0xCAFEBABE)

问题描述

环境信息

工具版本
OSWin10
JavaJDK11
Scala2.13.5
SBT1.3.13
Assembly2.1.0

1. 错误现象

在sbt shell执行assembly命令显示[success],但使用java -jar MyProject.jar运行生成的Jar文件时,出现如下错误:

java.lang.ClassFormatError: Incompatible magic value 4022320623 in class file Main

2. Class文件异常细节

解压Jar包后发现,所有.class文件均以0xEFBFBD EFBFBD开头(该字符无法被UTF-8识别);而sbt package生成的Class文件均以标准魔数0xCAFE BABE开头。对比二进制内容,两者大部分一致,但Assembly生成的文件中存在多处0xEFBFBD。

3. 已尝试的配置

尝试将多模块大型项目打包为单个Jar文件,已做如下编码配置:

  • IDEA全局/项目编码均设置为UTF-8
  • SBT的VM参数添加-Dfile.encoding=UTF-8
  • build.sbt中配置javaOptions ++= Seq("-encoding", "UTF-8")

已尽可能确保所有文件以UTF-8编码解码。

4. 组件版本测试情况

尝试过sbt-assembly的2.1.1和2.0.0版本,结果一致;由于需要自定义2.0.0版本后支持的Merge Strategy,未测试更早版本。

注:因权限限制无法展示代码,若需更多信息可告知。

内容的提问来源于stack exchange,提问作者Bean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:42:49