Należy pamiętać, że klasa sun.security.tools.JarSigner
została napisana do użycia jako narzędzie wiersza polecenia i nie została zaprojektowana do wywoływania z kodu Java. W rezultacie obsługa błędów jest dość gwałtowna: kod po prostu wypisze komunikat o błędzie na standardowe wyjście, a następnie zadzwoni pod numer System.exit()
1.
Oznacza to, że jeśli zadzwonić klasę z poziomu kodu Java i wystąpi błąd podczas próby do podpisania słoik, JVM uruchomiony kod będzie po prostu zatrzymać. Może to być dobre w zależności od sytuacji, ale jeśli Twój kod działa długo lub działa jako usługa, nie jest tak dobry.
To dlatego lepiej zadzwonić narzędzie jarsigner używając ProcessBuilder zgodnie komentarzu zacisk jest. Następnie można wywołać waitFor()
na wynikowym obiekcie Process i sprawdzić, czy polecenie zostało wykonane pomyślnie. getInputStream()
pozwoli ci przeczytać wszystkie komunikaty o błędach, które zostały wypisane do standardowego wyjścia, jeśli operacja się nie powiedzie.
można po prostu zadzwonić proces osoby podpisującej słoik od wewnątrz Java. najlepiej używać ProcessBuilder. – clamp