Ich möchte herausfinden, welche Java-Version die JAR-Datei hat, die ich habe

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

Ich möchte herausfinden, welche Java-Version die JAR-Datei hat, die ich habe
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
Ich möchte die MD5-Prüfsumme einer Datei in Java finden und das Ergebnis als Zeichenfolge in hexadezimaler Notation erhalten.
Ich möchte herausfinden, ob die angegebene Zeichenfolge vom Zielzeichencode unterstützt wird
Untersuchen Sie die Liste der in AWS Lambda + Java verfügbaren Schriftarten
Ich möchte den Feldnamen des [Java] -Felds erhalten. (Alter Ton)
JAVA: jar, aar, zeige den Inhalt der Datei an
Ich möchte den Inhalt der Absicht var_dump
Probieren Sie Progate Free Edition [Java I]
[Java] Ich möchte die Differenz zum Datum berechnen
[Java] Überprüfen Sie die JDK-Version der erstellten Kriegsdatei
Ich möchte die Antwort der Janken-App wissen
Ich möchte den Namen des Posters des Kommentars anzeigen
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Ich möchte die Bildlaufposition von UITableView zurückgeben!
Ich habe versucht herauszufinden, was sich in Java 9 geändert hat
Auch wenn ich den Inhalt eines Datenobjekts in Java in JSON konvertieren möchte, gibt es einen Zirkelverweis ...
Generieren und Ausführen der Jar-Datei der zum Paket gehörenden Java-Datei
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
(´-`) .. oO (Ich möchte die Standardausgabe" Hallo "leicht finden.
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
Ich möchte die Java 8 DateTime-API (jetzt) langsam verwenden.
Ich möchte eine Liste des Inhalts einer Zip-Datei und ihrer unkomprimierten Größe erhalten
Java: Das Problem ist schneller, Stream oder Loop
So ändern Sie den Inhalt der JAR-Datei, ohne sie zu dekomprimieren
[Java] Ich möchte auf jeden Fall MySQL verbinden !!! ~ Informationen zum Abrufen des JDBC-Treibers und des Speicherorts der JAR-Datei ~
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen
Ich möchte die Notwendigkeit des Testens beurteilen, indem ich die Unterschiede der Klassendateien beim Refactoring von Java vergleiche.
Vergleich von Versionszeichenfolgen, wenn Sie die Verarbeitung zwischen zwei Versionen verzweigen möchten (Java-Implementierung)
Ich möchte den Rahmen des Textfelds rot machen, wenn ein Eingabefehler auftritt
Ich möchte den Ablauf der Spring-Verarbeitungsanforderungsparameter verstehen
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Die Geschichte von Collectors.groupingBy, die ich für die Nachwelt behalten möchte
Möchten Sie wissen, was Ruby n die Potenz von 2 ist? (Machturteil von 2)
[Eclipse] Ich möchte dieselbe Datei zweimal öffnen. [Split-Editor]
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
Ich möchte die Eingabe begrenzen, indem ich den Zahlenbereich einschränke
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Ich möchte die Standardfehlermeldung von Spring Boot steuern
Ich habe ein Tool erstellt, um den Unterschied zwischen CSV-Dateien auszugeben
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
Ich war süchtig nach der API-Version min23 von registerTorchCallback
Ist die von Ihnen verwendete Version von Elasticsearch mit Java 11 kompatibel?
So ermitteln Sie die Länge einer Audiodatei mit Java
Ersetzen Sie den Inhalt der Jar-Datei
[Java Edition] Geschichte der Serialisierung
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
[Java Servlet] Die Straße von Senri ist auch ein Schritt zum ersten
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Ich möchte die JSP des offenen Portlets bei der Entwicklung von Liferay kennen
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
[Einführung in Java] Ich habe versucht, das Wissen zusammenzufassen, das ich für wesentlich halte