Springboot应用启动遇到的问题:
在Mac OS X 通过tar -zcvf 打包后在Linux解压发现每个文件夹产生“._”前缀,导致项目Spring boot工程启动报错误如下:
2023-07-28 03:39:21.164 info 43 data-intergration-os -- [] --- [ForkJoinPool.commonPool-worker-4] org.reflections.Reflections : could not create Dir using jarFile from url file:/opt/app/data-intergration-os/lib/._jackson-databind-2.10.2.jar. skipping.
凡是有“._”的jar文件都无法加载,最后排查确认是依赖的lib库各个jar包多了前缀的隐藏文件,导致jar无法加载并启动。
细心的同学会发现通过Mac电脑tar打包后在centos系统下通过tar -zxvf 解压后提示如下错误:
Centos8 tar: Ignoring unknown extended header keyword `LIBARCHIVE.xattr.com.apple.provenance'
经过搜索发现,产生这个报错的原因是这个 tar 文件是在 Mac OS X 上打包压缩的,Mac OS X 使用的是 BSD tar,所以它会产生一些 GNU tar 无法识别的额外的信息。
问题找到了那解决方案那就简单了,有两种解决办法:
1,只需将待打包压缩的文件放在 Linux 服务器上执行即可。
2,在Mac OS X安装GNU tar
brew install gnu-tar
安装完成后在Mac OS X 重新打包
gtar -zcvf xxx.tar.gz file1 file2
通过gtar命令生成的 tar 包就是标准的 GNU tar 包,可以在 Linux 上正常解压。