Wie programmierst du JAR-Dateien in Java programmatisch?

8

Hat jemand das schon mal gemacht? Die einzige Referenz, die ich bei Google gefunden habe, war: Ссылка , die noch immer sun. * Classes verwendet wird Probleme verursachen ...

Auch das wurde gefunden, funktioniert aber nicht mit java16: Ссылка

    
wuntee 07.10.2011, 14:29
quelle

4 Antworten

3

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.

    
mmm444 21.10.2013 17:00
quelle
3

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.

    
alphaloop 19.06.2014 01:33
quelle
2

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.

    
Nathan Voxland 22.06.2012 15:06
quelle
0

Ich verwende die SingJar-Ant-Aufgabe (die anscheinend das Befehlszeilen-Tool darunter aufruft). Es sollte möglich sein, das programmatisch aufzurufen.

    
Michael Borgwardt 07.10.2011 15:13
quelle

Tags und Links