"Archivo de firma no válido" al intentar ejecutar un .jar
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.
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>
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'
}
Por favor use el siguiente comando
zip -d yourjar.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*.DSA'