web-dev-qa-db-fra.com

Exception dans le thread "principal" Java.lang.SecurityException: Résumé du fichier de signature non valide pour les attributs principaux du manifeste.

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)

Salut, je reçois cette erreur et je me demandais si quelqu'un pourrait me dire quelle était la cause de ceci. C'est l'instantané du fichier de variole de mon projet. Toute aide serait appréciée.

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.50</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-Java</artifactId>
        <version>5.1.29</version>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.3-1101-jdbc41</version>
    </dependency>
    <dependency>
        <groupId>org.objectweb.joram</groupId>
        <artifactId>jftp</artifactId>
        <version>1.52</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.2</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <artifactSet>
                            <excludes>
                                <exclude>junit:junit</exclude>
                                <exclude>org.Apache.maven:lib:tests</exclude>
                            </excludes>
                        </artifactSet>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
13
Jay

Après avoir navigué sur Internet pendant des heures et toujours incapable de trouver la solution, je suis tombé sur cette commande qui a résolu mon problème:

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

Cette commande extrait les fichiers de signature pour les fichiers JAR précédents, et une fois que vous l'avez signée, vous ne trouverez aucune erreur.

9
0_o

J'essayais de créer un super pot avec Maven et je suis tombé sur ce problème et j'ai pu résoudre le problème comme suit.

Voici comment j'ai configuré le plugin shade pour inclure Twitter4j à mon uber jar.

<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<executions>
    <execution>
        <phase>package</phase>
        <goals>
            <goal>shade</goal>
        </goals>
        <configuration>

            <filters>
                <filter>
                    <artifact>spark-streaming-Twitter_2.10:spark-streaming-Twitter_2.10</artifact>
                    <includes>
                        <include>**</include>
                    </includes>
                </filter>
                <filter>
                    <artifact>Twitter4j-stream:Twitter4j-stream</artifact>
                    <includes>
                        <include>**</include>
                    </includes>
                </filter>
                <filter>
                    <artifact>*:*</artifact>
                    <excludes>
                        <exclude>META-INF/*.SF</exclude>
                        <exclude>META-INF/*.DSA</exclude>
                        <exclude>META-INF/*.RSA</exclude>
                    </excludes>
                </filter>
            </filters>
        </configuration>
    </execution>
</executions>
</plugin>

J'espère que cela t'aides.

8
tharindu_DG

Je pense que j'ai eu la solution à ma propre question, l'ajout des balises mentionnées ci-dessous au pom.xml résout le problème:

<excludes>
    <exclude>META-INF/*.SF</exclude>
    <exclude>META-INF/*.DSA</exclude>
    <exclude>META-INF/*.RSA</exclude>
    <exclude>junit:junit</exclude>
    <exclude>org.Apache.maven:lib:tests</exclude>
</excludes>

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

6
Jay

J'avais des problèmes similaires, j'ai ajouté la dépendance de Bounty Castle qui causait cette erreur. Juste enlevé et après cela a fonctionné bien.

1
Athar

La question et la réponse Stackexchange suivantes ont fonctionné pour moi. Il utilise un filtre au lieu de et artifactSet exclure. J'ai essayé les solutions dans la réponse ci-dessus et cela n'a pas fonctionné.

"Fichier de signature non valide" lors de la tentative d'exécution d'un fichier .jar

0
jmsimpson68