flink项目build artificts打成的jar包中没有主函数

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