Tenga en cuenta que la clase sun.security.tools.JarSigner
se escribió para utilizarse como una utilidad de línea de comandos y no se diseñó para llamarse desde el código Java. Como resultado, el manejo de errores es bastante abrupto: el código simplemente imprimirá un mensaje de error a la salida estándar y luego llamará al System.exit()
1.
Esto significa que si llama a la clase desde su código Java y se produce un error cuando intenta firmar un jar, la JVM que ejecuta el código simplemente se detendrá. Esto puede estar bien dependiendo de su situación, pero si su código es de larga duración o actúa como un servicio, no es tan bueno.
Por lo tanto, es mejor llamar a la herramienta jarsigner con ProcessBuilder según el comentario de la abrazadera. A continuación, puede llamar al waitFor()
en el objeto de proceso resultante y marcar exitValue()
para ver si el comando fue exitoso. getInputStream()
le permitirá leer los mensajes de error que se escribieron en la salida estándar si falla la operación.
puede llamar al proceso jar signer desde dentro de java. Lo mejor es usar ProcessBuilder. – clamp