linux 下 vi 编辑器编辑二进制文件时 末尾默认添加 0X0A 作为结尾 导致无法启动

在一次vi 查看jar 文件过程中,输入了:wq 退出,使用java -jar foo.jar 启动时出现了报错

因为之前是正常的,查看之后就无法启动了,因此推断可能与vi查看时保存退出有关

找来了之前正常的jar文件 和 有问题的文件做对比发现 在末尾位置用wq保存的多了个0x0A 字符

定位原因后查找 解决办法 在编辑时 设置

:set noendofline binary

再次输入 :wq 退出 末尾字符就消失了。

扩展提高

因以上问题已解决 因为java -jar 命令会忽略jar包文件格式开头之前的全部内容 所以熟悉java的同学可以玩一个骚操作

直接将整个脚本文件 添加在jar文件的顶部

记得在脚本的末尾添加 exit 防止读取到文件内容 在保存退出之前记得 先去掉0x0A字符哟

添加完成后 赋予 foo.jar 执行权限 chmod 755 foo.jar

现在就可以直接使用 ./foo.jar 直接启动java程序了。