Über Java zu Lesen .jar-manifest-Datei
so, ich bin Versuch zu sehen, ob eine .jar gültig ist oder nicht, indem Sie einige Werte in der mainfest-Datei. Was ist der beste Weg, um zu Lesen und Parsen der Datei, die mit java? Ich dachte, verwenden Sie diesen Befehl, um die Datei zu extrahieren
jar -xvf anyjar.jar META-INF/MANIFEST.MF
Aber kann ich einfach so etwas wie:
File manifest = Command.exec("jar -xvf anyjar.jar META-INF/MAINFEST.MF");
Dann nutzen Sie einige buffered reader oder etwas zum Parsen der Zeilen der Datei?
Vielen Dank für jede Hilfe...
Möglich, Duplikat der stackoverflow.com/questions/2198525/...
InformationsquelleAutor Kyle | 2013-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem mit der
jar
tool ist, dass es erfordert das gesamte JDK installiert sein. Viele Benutzer von Java wird nur das JRE installiert ist, die zählen nichtjar
.Auch
jar
müsste im PFAD des Benutzers.Anstatt also würde ich empfehlen, mit der richtigen API, wie folgt:
Das sollte eigentlich einfacher sein!
Ja. Aber es muss schon die Frage auf Stackoverflow.
So weit ich werde ich in der Lage gewesen, zu finden ist, über die Eingabeaufforderung, aber dieser link scheint, wie es funktionieren würde, aber es sieht irgendwie compicated lol. Warum kann es nicht einfach sein, wie (jar-Datei).run() oder so etwas. programcreek.com/2012/08/unzip-a-jar-file-in-java-program
Ja, leider ist es komplizierter. Aber Sie können einfach kopieren und einfügen, so, who cares?
InformationsquelleAutor Robin Green
Die Paket-Klasse bei java.lang.Paket hat Methoden, das zu tun, was Sie wollen. Hier ist eine einfache Möglichkeit, um manifest-Inhalt über Ihren java-code:
Lege ich diese in eine statische Methode in einem shared-utility-Klasse.Die Methode akzeptiert ein Klasse handle-Objekt als parameter. Auf diese Weise ist jede Klasse in unserem system können Sie Ihre eigenen manifest-Informationen, wenn Sie es brauchen. Offensichtlich könnte die Methode leicht modifiziert werden, um ein array zurückgeben, oder hashmap Werte.
rufen Sie die Methode:
die Methode in eine Datei mit dem Namen GeneralUtils.java:
Und zu erhalten manifest-Feldern andere Werte als diejenigen, die Sie bekommen können über die Paket-Klasse (z.B. Ihre eigene Build-Datum), erhalten Sie die Wichtigsten Attibutes und Arbeit durch diejenigen, die Fragen, für die insbesondere eine, die Sie wollen. Der folgende code ist eine leichte mod aus einer ähnlichen Frage, die ich fand, wohl auch hier SO. (Ich möchte es Kredit, aber ich habe Sie verloren - sorry.)
setzen Sie diese in einem try-catch-block, übergehend in eine classHandle ("dies" oder MyClass.class ) an die Methode. "classHandle" - Typ ist Klasse:
InformationsquelleAutor Iceberg
Der einfachste Weg ist die Verwendung JarURLConnection Klasse :
Weil in einigen Fällen
...class.getProtectionDomain().getCodeSource().getLocation();
gibt Pfad mitvfs:/
, so dass diese behandelt werden sollten zusätzlich.Oder, mit ProtectionDomain:
InformationsquelleAutor ayurchuk