2017-10-10 4 views
3

Trennen von dieser aus der initial question, die ich hatte, vorausgesetzt, dass dies generisch genug ist. Wie kann ich vor einer Artefaktprüfung prüfen, ob es sich um ein Multi-Release-Glas handelt?Wie überprüft man, ob ein Glas Multi-Release ist

Multi-Release: true 

Ich weiß, seine möglichen manuell in die MANIFEST.MF im META-INF des Glases für das oben Attribut suchen, aber gibt es eine Befehlszeilenoption für diese zur Verfügung?

Vielleicht vermisse ich etwas bereits vorhanden mit einem anderen Namen oder blind zu etwas sehr offensichtlich. Aber ich habe versucht, nach einer solchen Option in jar und java Werkzeug auch keinen Erfolg zu suchen.

+0

Als ich nach einem Weg suchte, in ein JARs Manifest zu schauen, fand ich auch keine Lösung. Ich denke, es gibt keinen Weg um [entpacken] (https://Stackoverflow.com/a/46662468/2525313). – Nicolai

+3

Nicolai ist korrekt, das "jar" -Tool bietet keine Optionen, um schnell zu sehen, ob eine JAR-Datei ein MR JAR ist. Am einfachsten ist es, jar --file = --list zu verwenden und nach META-INF/Versionen in der Liste zu suchen. Ja, es gibt einen Eckfall, bei dem jemand einen Versionsabschnitt ohne das Multi-Release-Attribut im Manifest hinzufügt. –

Antwort

4

jar unterstützt nur spezielle Vorgänge in der Manifestdatei während der Erstellung und Aktualisierung. Sie können mit diesem erhalten von:

unzip -p file.jar META-INF/MANIFEST.MF | grep "Multi-Release: true" 

Other than that, JarFile das folgende neue Verfahren umfasst, die nützlich sein könnten:

boolean isMultiRelease(): true zurück, wenn diese JAR-Datei ein Multi-Release JAR ist Datei.

+3

Vielleicht sollten Sie hinzufügen, dass dies nur unter Linux funktioniert. :) – Nicolai

+0

Nicht genau was ich suchen würde. Was etwas Ähnliches betrifft, musste ich in der Frage erwähnen, dass ich weiß, dass ich den Jar-Inhalt durchqueren muss. Auch @Nicolai erwähnt, könnte dies gut von anderen Tools als dem JDK selbst abhängig sein. – nullpointer

+1

Ich weiß, es ist keine ideale Lösung, aber es wird für einige Szenarien funktionieren. Leider glaube ich, dass jar eine Datei nicht nach STDOUT extrahieren kann. – neuhaus

Verwandte Themen