A jar
n'est qu'un conteneur. Il s'agit d'une archive de fichiers à la tar
. Même si un jar
peut contenir des informations intéressantes dans sa hiérarchie META-INF , il n'a aucune obligation de spécifier le millésime des classes dans son contenu. Pour cela, il faut examiner les class
fichiers qui s'y trouvent.
Comme Peter Lawrey l'a mentionné dans le commentaire de la question d'origine, vous ne pouvez pas nécessairement savoir quelle version JDK a construit un class
fichier donné , mais vous pouvez trouver la version de la classe de code octet du class
fichier contenu dans a jar
.
Oui, c'est un peu nul, mais la première étape consiste à extraire une ou plusieurs classes du jar
. Par exemple:
$ jar xf log4j-1.2.15.jar
Sous Linux, Mac OS X ou Windows avec Cygwin installé, la commande file (1) connaît la version de la classe.
$ file ./org/apache/log4j/Appender.class
./org/apache/log4j/Appender.class: compiled Java class data, version 45.3
Ou bien, utiliser à javap
partir du JDK comme @ jikes.thunderbolt indique avec justesse:
$ javap -v ./org/apache/log4j/Appender.class | grep major
major version: 45
Et si vous êtes relégué dans un Windows
environnement sans file
ougrep
> javap -v ./org/apache/log4j/Appender.class | findstr major
major version: 45
FWIW, je conviens que javap
cela en dira beaucoup plus sur une donnéeclass
fichier que la question initiale posée.
Quoi qu'il en soit, une version de classe différente, par exemple:
$ file ~/bin/classes/P.class
/home/dave/bin/classes/P.class: compiled Java class data, version 50.0
Le numéro majeur de version de classe correspond aux versions JDK Java suivantes:
- 45,3 = Java 1,1
- 46 = Java 1.2
- 47 = Java 1.3
- 48 = Java 1.4
- 49 = Java 5
- 50 = Java 6
- 51 = Java 7
- 52 = Java 8
- 53 = Java 9