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