Comment puis-je savoir quelle version de java le fichier jar dont je dispose est disponible?
Pour dire la vérité, le fichier jar lui-même n'a pas de version de compilation. Un fichier jar n'est qu'une archive de classe, de propriétés et d'autres fichiers. Par exemple, jar peut être considéré comme un parent de tar ou zip. Par conséquent, pour savoir si le fichier jar est disponible pour une version particulière de Java, ce n'est pas la version du fichier jar lui-même, mais avec quelle version de javac le fichier de classe contenu dans ce fichier jar a été construit. J'ai besoin de jeter un oeil.
Ici, commons-collections4-4.4.jar
(Apache Commons Collections v.4.4) peut être utilisé à partir de quelle version comme exemple de la méthode d'investigation. Je vais enquêter si c'est le cas.
Tout d'abord, utilisez la commande jar
pour extraire le contenu du fichier jar.
$ jar xf commons-collections4-4.4.jar
Vous devriez trouver plusieurs fichiers de classe stockés dans le fichier jar. Ici, nous utiliserons . / Org / apache / commons / collections4 / ArrayStack.class
comme exemple.
$ find . -name "*.class" | head -n1
./org/apache/commons/collections4/ArrayStack.class
J'aimerais savoir quelle version de javac . / Org / apache / commons / collections4 / ArrayStack.class
a été construite, mais le moyen le plus rapide est d'utiliser la commande file
. Dans ce cas, il est évident qu'il est construit avec Java 8.
$ file ./org/apache/commons/collections4/ArrayStack.class
./org/apache/commons/collections4/ArrayStack.class: compiled Java class data, version 52.0 (Java 1.8)
Utilisez javap
dans un environnement sans la commande file
.
$ javap -v ./org/apache/commons/collections4/ArrayStack.class | grep major
major version: 52
javap
est une commande pour assembler à rebours un fichier de classe, et si vous ajoutez l'option -v
, des informations détaillées sont affichées et les informations de version y sont mélangées. Ceci est divisé par «grep». La valeur version majeure: 52
affichée ici pointe vers Java 8. Concernant la correspondance entre cette version majeure
et la version Java, veuillez vous référer à la page suivante, qui est bien organisée → [Wikipedia: fichier de classe Java](https://en.wikipedia.org/wiki/ Java_class_file)
Recommended Posts