Wie kann ich herausfinden, welche Java-Version in der JAR-Datei verfügbar ist?
Um die Wahrheit zu sagen, hat die JAR-Datei selbst keine Build-Version. Eine JAR-Datei ist nur ein Archiv von Klassen, Eigenschaften und anderen Dateien. Zum Beispiel kann man sagen, dass Glas ein Verwandter von Teer oder Reißverschluss ist. Um herauszufinden, ob die JAR-Datei für eine bestimmte Java-Version verfügbar ist, handelt es sich nicht um die Version der JAR-Datei selbst, sondern um die Version von Javac, mit der die in dieser JAR-Datei enthaltene Klassendatei erstellt wurde. Ich muss einen Blick darauf werfen.
Hier kann "commons-collection4-4.4.jar" (Apache Commons Collections v.4.4) aus welcher Version als Beispiel für die Untersuchungsmethode verwendet werden. Ich werde untersuchen, ob es ist.
Verwenden Sie zuerst den Befehl jar
, um den Inhalt der JAR-Datei zu extrahieren.
$ jar xf commons-collections4-4.4.jar
In der JAR-Datei sollten mehrere Klassendateien gespeichert sein. Hier verwenden wir ". / Org / apache / commons / collection4 / ArrayStack.class" als Beispiel.
$ find . -name "*.class" | head -n1
./org/apache/commons/collections4/ArrayStack.class
Ich möchte herausfinden, von welcher Version von javac . / Org / apache / commons / collection4 / ArrayStack.class
erstellt wurde, aber der schnellste Weg ist die Verwendung des Befehls file
. In diesem Fall ist es offensichtlich, dass es mit Java 8 erstellt wurde.
$ file ./org/apache/commons/collections4/ArrayStack.class
./org/apache/commons/collections4/ArrayStack.class: compiled Java class data, version 52.0 (Java 1.8)
Verwenden Sie javap
in einer Umgebung ohne den Befehl file
.
$ javap -v ./org/apache/commons/collections4/ArrayStack.class | grep major
major version: 52
javap
ist ein Befehl zum umgekehrten Zusammenstellen einer Klassendatei. Wenn Sie die Option -v
hinzufügen, werden detaillierte Informationen ausgegeben und Versionsinformationen darin gemischt. Dies wird durch "grep" geteilt. Der hier angezeigte Wert "Hauptversion: 52" zeigt auf Java 8. Informationen zur Entsprechung zwischen dieser Hauptversion und der Java-Version finden Sie auf der nächsten Seite, die gut organisiert ist → Wikipedia: Java-Klassendatei Java_class_file)
Recommended Posts