java.lang.SecurityException的解決辦法

今天用Gradle跑一個項目出了個錯誤,以前都是用ant跑的


症狀如下:Build的時候很正常,但是Run的時候提示

Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

初看起來是簽名不符合,猜想可能是gradle和ant的包不一樣

於是搜索了一下症狀:

Stackoveflow : invalid signature

iText question

看完了上面的討論我理解是 因爲Gradle把所有dependency都打包到了一起,所以不同版本的包可能會衝突


然後Justin來看了一下,立刻指出 其實這個原因是因爲簽名衝突,一些SF、RSA文件重複了,而我們的項目其實不需要用到這些文件

Maven打包問題

跟上面的這個問題基本上道理是一樣的。

於是我去改了一下項目目錄下的gradle.build文件

exclude dependency

用這位仁兄的做法,就在runtime.collect這句話後面加三句exclude就行了

    from {configurations.runtime.collect {zipTree(it)}} //
    {
        exclude "META-INF/*.SF"
        exclude "META-INF/*.DSA"
        exclude "META-INF/*.RSA"
    }

每個人的具體情況可能不一樣,不過我這麼做就可以解決問題了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章