Tools | Version |
---|---|
OS | Win10 |
JavaJDK | 11 |
Scala | 2.13.5 |
SBT | 1.3.13 |
Assembly | 2.1.0 |
The repository of sbt-assembly个
- 错误消息.
我在SBTshell 中运行assembly
,它输出[成功].
然后,我try 运行cmd中包含java -jar MyProject.jar
的输出.jar,并得到以下错误:
java.lang.ClassFormatError: Incompatible magic value 4022320623 in class file Main
与下面的错误消息相同:Java Incompatible magic value 4022320623
但我所有的工作都是在本地完成的,没有任何上传或下载操作.
- 类文件的头.
我解压.jar包,发现所有.class个文件都以0xEFBFBD EFBFBD
开头,这意味着UTF-8
无法识别该字符.
我以前运行过sbt package
,在这种情况下,每个Java类文件都以0xCAFE BABE
开头.
我以二进制形式比较了这两个类文件.它们中的大多数都是相同的,但由ASSEMBLE命令生成的命令中有数百个.
- 我想要做的是.
我正在try 将一个包含多个模块的大型项目组装到一个.jar个文件中.
-
整个项目用
UTF-8
=>; idea :全球/项目编码:UTF-8
-
SBT有VM选项:
-Dfile.encoding=UTF-8
-
Build.sbt有行:
javaOptions ++= Seq("-encoding", "UTF-8")
我尽我所能确保所有文件都是以UTF-8
编码和解码的.
- 其他版本的程序集.
我还try 了SBT-ASSEMBLE版本2.1.1和2.0.0,得到了相同的结果.
我需要定制2.0.0之后支持的合并策略,所以我没有try 更多的版本.
我不能在这里显示任何代码,因为我没有这样做的权利.但是如果你需要更多关于这个问题的信息,请让我知道.