线程“main”中的exceptionjava.lang.SecurityException:Manifest主要属性的签名文件摘要无效

Exception in thread "main" java.lang.SecurityException: Invalid signature file d igest for Manifest main attributes at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVeri fier.java:240) at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier .java:193) at java.util.jar.JarVerifier.processEntry(JarVerifier.java:262) at java.util.jar.JarVerifier.update(JarVerifier.java:216) at java.util.jar.JarFile.initializeVerifier(JarFile.java:341) at java.util.jar.JarFile.getInputStream(JarFile.java:406) at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:75 2) at sun.misc.Resource.cachedInputStream(Resource.java:77) at sun.misc.Resource.getByteBuffer(Resource.java:160) at java.net.URLClassLoader.defineClass(URLClassLoader.java:436) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:480) 

嗨,我得到这个错误,我想知道是否有人可以告诉我是什么原因导致这。这是我项目的痘文件的快照。 任何帮助,将不胜感激。

   junit junit 3.8.1 test   com.jcraft jsch 0.1.50   mysql mysql-connector-java 5.1.29   org.postgresql postgresql 9.3-1101-jdbc41   org.objectweb.joram jftp 1.52      org.apache.maven.plugins maven-shade-plugin 2.2   package  shade     junit:junit org.apache.maven:lib:tests         

上网冲浪几个小时后,仍无法找到解决方案,我偶然发现了解决我问题的这个命令:

 zip -d yourjar.jar 'META-INF/.SF' 'META-INF/.RSA' 'META-INF/*SF' 

此命令会删除先前jar的签名文件,然后一旦签名就会发现没有错误。

我试图用maven创建一个超级jar并且遇到了这个问题,我能够解决这个问题如下。

以下是我如何配置shade插件以将twitter4j包含到我的超级jar中。

  org.apache.maven.plugins maven-shade-plugin 2.4.2   package  shade     spark-streaming-twitter_2.10:spark-streaming-twitter_2.10  **    twitter4j-stream:twitter4j-stream  **    *:*  META-INF/*.SF META-INF/*.DSA META-INF/*.RSA        

希望这可以帮助。

我想我得到了自己的问题的解决方案,下面提到的标签添加到pom.xml解决了这个问题:

  META-INF/*.SF META-INF/*.DSA META-INF/*.RSA junit:junit org.apache.maven:lib:tests  

http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Signed_JAR_File

我遇到了类似的问题,我添加了导致此错误的Bounty Castle依赖项。 刚刚删除它,之后它工作正常。

以下Stackexchange问​​题和答案对我有用。 它使用filter代替和artifactSet排除。 我已经在上面的答案中尝试了解决方案但它没有用。

尝试运行.jar时“无效的签名文件”