"Archivo de firma no válido" al intentar ejecutar un .jar

Resuelto asked hace 15 años • 24 respuestas

Mi programa Java está empaquetado en un archivo jar y utiliza una biblioteca jar externa, bouncy castle . Mi código se compila bien, pero al ejecutar el jar se produce el siguiente error:

Excepción en el hilo "principal" java.lang.SecurityException: resumen del archivo de firma no válido para los atributos principales del manifiesto

Busqué en Google durante más de una hora buscando una explicación y encontré muy poco de valor. Si alguien ha visto este error antes y puede ofrecerme ayuda, se lo agradecería.

 avatar Jun 16 '09 10:06
Aceptado

Para aquellos que recibieron este error al intentar crear un uber-jar sombreado con maven-shade-plugin, la solución es excluir los archivos de firma del manifiesto agregando las siguientes líneas a la configuración del complemento:

<configuration>
    <filters>
        <filter>
            <artifact>*:*</artifact>
            <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
            </excludes>
        </filter>
    </filters>
    <!-- Additional configuration. -->
</configuration>
ruhsuzbaykus avatar Jul 19 '2011 07:07 ruhsuzbaykus

Para aquellos que usan gradle y tratan de crear y usar un fat jar, la siguiente sintaxis puede ser útil.

jar {
    doFirst {
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    }
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA' 
}
Keith P avatar Jan 21 '2013 15:01 Keith P

Por favor use el siguiente comando

zip -d yourjar.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*.DSA'
Peter2711 avatar Jun 09 '2016 17:06 Peter2711