今天在自己的电脑上,Ubuntu 14.04 中用Idea + SBT编写Spark测试代码,并打包成jar,上传到Spark集群上,submit时报错:
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
于是开始网上查资料,找原因,在
http://blog.csdn.net/liuzhoulong/article/details/19073351上看到了原因,但是,他是使用Maven,而我使用SBT,瞬间我就凌乱了,我怎么解决? SBT中怎么使用Maven中的filters和exclude?由于我对SBT不是熟悉,一时不知所措
后来,继续google寻求帮助,在 https://gist.github.com/hkhamm/88923412992d284580ea 上看到了解决方法:
zip -d <jar file name>.jar META-INF/*.RSA META-INF/*.DSA META-INF/*.SF
即: 在linux下,直接使用zip命令,将打好包的jar文件中的 META-INF/*.RSA META-INF/*.DSA META-INF/*.SF 文件删掉.于是,我抱着试试的心理,执行了一遍,再次向集群提交任务.OK,问没有报错!故在此备忘,也希望能帮助遇到同样问题的同学.
总结:此类问题应该是针对maven或者sbt等工具打包的jar程序都普遍存在,本方法也同样适用.