javacv依赖太大,导致jar包也大_javacv-platform
最近在写项目时,用到了javacv里的获取视频第一帧的功能,确实很好用。但是后续在进行线上打包部署的时候,发现打包出来的jar包足足有1.09g这么大,导致多部署几次就会把docker磁盘占满,于是打开jar包一看,发现是javacv占了足足800mb
有很多都是我们用不到的,于是就进行了删减优化,接下来给大家分享步骤。
1.检查依赖
原先我们引用javacv可能是直接引入整个包,如
org.bytedeco javacv-platform 1.5.7
所以我们需要对项目依赖进行精简。一般我们的服务都是部署在Linux服务器平台上,开发的平台无非是Mac和Windows,所以我们只需要保留这三个平台的依赖,最后上线生产的时候只留下Linux平台的即可。
2.更改依赖
org.bytedecojavacv${javacv.version}org.bytedecojavacpp${javacv.version}${javacpp.platform.macosx-x86_64}org.bytedecoffmpeg${javacv.ffmpeg.version}${javacpp.platform.macosx-x86_64}org.bytedecojavacpp${javacv.version}${javacpp.platform.linux-x86}org.bytedecoffmpeg${javacv.ffmpeg.version}${javacpp.platform.linux-x86}org.bytedecojavacpp${javacv.version}${javacpp.platform.linux-x86_64}org.bytedecoffmpeg${javacv.ffmpeg.version}${javacpp.platform.linux-x86_64}org.bytedecojavacpp${javacv.version}${javacpp.platform.windows-x86}org.bytedecoffmpeg${javacv.ffmpeg.version}${javacpp.platform.windows-x86}org.bytedecojavacpp${javacv.version}${javacpp.platform.windows-x86_64}org.bytedecoffmpeg${javacv.ffmpeg.version}${javacpp.platform.windows-x86_64}
然后写在里的版本控制根据需求来定,这里博主给出自己的配置
1.5.85.1.2-1.5.8macosx-x86_64linux-x86linux-x86_64windows-x86windows-x86_64
3.检查副依赖
到这里基本上就已经改完了,剩下的就是检查自己项目在哪个包下还引用了javacv的地方,在打包部署之前需要提前把上面的依赖移植到对应包下面(记得去除版本),不然线上会报这样的错
msg : \"Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacv.FFmpegFrameGrabber\"