java.lang.SecurityException的解决办法

  • Post author:
  • Post category:java


今天用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"
    }

每个人的具体情况可能不一样,不过我这么做就可以解决问题了。



版权声明:本文为lkitbontb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。