Si noti che la classe sun.security.tools.JarSigner
è stata scritta per essere utilizzata come utilità della riga di comando e non è stata progettata per essere chiamata dal codice Java. Di conseguenza, la gestione degli errori è piuttosto brusca: il codice stamperà semplicemente un messaggio di errore sullo standard e quindi chiama System.exit()
1.
Ciò significa che se si chiama la classe dal proprio codice Java e si verifica un errore quando si tenta di firmare un jar, la JVM che esegue il codice si interromperà semplicemente. Questo può andare bene a seconda della situazione, ma se il tuo codice è di lunga durata o funziona come un servizio, non è così buono.
È quindi preferibile chiamare lo strumento jarsigner utilizzando ProcessBuilder come da commento della pinza. È quindi possibile chiamare waitFor()
sull'oggetto Process risultante e verificare exitValue()
per verificare se il comando ha avuto esito positivo. getInputStream()
consente di leggere qualsiasi messaggio di errore che è stato scritto sullo standard se l'operazione non riesce.
si potrebbe semplicemente chiamare il processo firmatario jar da dentro java. meglio usare ProcessBuilder. – clamp