Um eine plötzliche Änderung der Sicherheitseinschränkungen in WebStart-Anwendungen in Java 7u45 zu beheben, haben wir einen einfachen signierten JAR-Dateigenerator erstellt . Es verwendet Guava 15 und Bouncy Castle bcpkix Modul. Es sollte auf Java 6 & amp; 7. Es ist nur für kleine Dateien geeignet. Verwenden Sie es für jeden gewünschten Zweck.
Beachten Sie, dass die Klasse sun.security.tools.JarSigner
so geschrieben wurde, dass sie als Befehlszeilendienstprogramm verwendet werden kann und nicht dazu gedacht war, aus Java-Code aufgerufen zu werden. Als Ergebnis ist die Fehlerbehandlung ziemlich abrupt: der Code wird einfach eine Fehlermeldung an den Standardausgang ausgeben und dann System.exit()
1 .
Dies bedeutet, dass wenn Sie die Klasse in Ihrem Java-Code aufrufen und ein Fehler auftritt, wenn Sie versuchen, ein Jar zu signieren, die JVM, die Ihren Code ausführt, einfach stoppt. Das kann in Abhängigkeit von Ihrer Situation gut sein, aber wenn Ihr Code lange läuft oder als Dienst fungiert, ist das nicht so gut.
Es ist daher besser, das jarsigner-Tool mit dem ProcessBuilder gemäß dem Kommentar der Klammer aufzurufen. Sie können dann waitFor()
für das resultierende Process-Objekt aufrufen und exitValue()
prüfen, um zu sehen, ob der Befehl erfolgreich war. Mit getInputStream()
können Sie alle Fehlermeldungen lesen, die bei Ausfall der Operation in die Standardausgabe geschrieben wurden.
In der Datei tools.jar befindet sich die Klasse sun.security.tools.JarSigner, die eine statische Methode hat (ava.lang.String [] strings), die dieselben Parameter wie die ausführbare Datei jarsigner verwendet.
Sie können also etwas wie:
nennen %Vor%Sie müssen sicherstellen, dass sich tools.jar zum Kompilieren und Ausführen in Ihrem Klassenpfad befindet.
Ich verwende die SingJar-Ant-Aufgabe (die anscheinend das Befehlszeilen-Tool darunter aufruft). Es sollte möglich sein, das programmatisch aufzurufen.