Помните, что класс sun.security.tools.JarSigner
написан для использования в качестве утилиты командной строки и не предназначен для вызова из кода Java.В результате обработка ошибок довольно резкая: код просто выведет сообщение об ошибке в стандартный формат и затем вызовет System.exit()
1 .
Это означает, что если вы вызываете классизнутри вашего Java-кода и при попытке подписать jar возникает ошибка, JVM, выполняющая ваш код, просто остановится.Это может быть хорошо в зависимости от вашей ситуации, но если ваш код долго работает или действует как служба, это не так хорошо.
Поэтому лучше вызывать инструмент jarsigner, используя ProcessBuilder, согласно комментарию зажима.Затем можно вызвать waitFor()
для получающегося объекта Process и проверить exitValue()
, чтобы увидеть, была ли команда успешной.getInputStream()
позволит вам прочитать любые сообщения об ошибках, которые были записаны в стандартный формат, если операция не удалась.