flink项目build artificts打成的jar包中没有主函数
问题描述
今天把同事的一个包复制到我的工程下,然后正常打包,指定主函数,一切正常,然后将打成的jar包通过flink web页面提交任务,上传成功后总是显示没有主类,点击运行也是失败。然后我就把同事的代码删掉,重新打包还是不行。
解决方案
同事用的windows本,他说打开jar包,注意不是解压,把下面四个文件删掉就好了
zip -d realtime_flink7.jar META-INF/BC1024KE.SF
zip -d realtime_flink7.jar META-INF/BC1024KE.DSA
zip -d realtime_flink7.jar META-INF/BC2048KE.DSA
zip -d realtime_flink7.jar META-INF/BC2048KE.SF
但是我是mac本,查了半天也不知道怎么打开jar包,网上说的都是用unzip命令解压jar包
在我准备放弃的时候,同事找到一篇文章
-- 查看jar包中内容
unzip -l
unzip -l realtime_flink7.jar|grep META|grep -E "BC1024KE|BC2048KE"
-- 删除jar包中文件
zip -d realtime_flink7.jar META-INF/BC1024KE.SF
zip -d realtime_flink7.jar META-INF/BC1024KE.DSA
zip -d realtime_flink7.jar META-INF/BC2048KE.DSA
zip -d realtime_flink7.jar META-INF/BC2048KE.SF
其他
shell 删除jar包中的文件或文件夹
把jar包中的配置文件删除或者修改文件,但又不能破坏jar包的格式,使用7z来解决这样的需求。
系统中需要安装7z命令
7z d demo.jar WEB-INFO/lib
7z d demo.jar WEB-INFO/config.properties
7z d demo.jar WEB-INFO/lib/123/*
linux安装7z命令
linux上安装7z命令有两种方式:在线安装和安装包安装,下面分别介绍。
1.1 在线安装
如果你的宿主机Linux可以连接外网,推荐用这种方式,方便简单,执行命令:
sudo apt-get install p7zip
1.2 线下安装见云笔记
mac安装7z命令
brew search p7zip
brew install p7zip
brew list p7zip