今天在自己的電腦上,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程序都普遍存在,本方法也同樣適用.