之前做过一个声纹流解码的问题,解码用到一个ffmpeg的jar包,在window服务器上和linux-x86架构上都能部署成功。公司要求自主管控,所有的服务都必须部署在arm架构上的服务器。心想java最大的特点不就是跨平台吗,那还不容易,立马开整,没想到啊,公司的arm架构不是真正的arm64,是aarch64。
然后再看我的ffmpeg引入的jar,
是平台包呀,怎么还是不行?OK,继续看平台包引入了哪些
这样确实没有以aarch64结尾的。试了各种jar引入都是不行,总不能让我把代码逻辑改掉吧。声纹流解码本身就比较难处理,好吧,那只能从部署上下手了。想起来java是跨平台的,但是找不到jar,那我用docker在arm上部署一个x86的centos7.6的系统镜像,再从镜像里部署java应用行不行?说干就干
一开始直接用联网的服务器进行下载centos7.6的镜像,但是安装完镜像用uname -m都还是以aarch开头的架构,之后找同事要了一个离线的linux——x86架构的镜像。镜像安装后,uname -m一看,果然是x86的架构了,然后在镜像系统内安装java环境再部署jar应用,把jar启动成功,ok,完整解流!完美!



