Liste des numéros de version majeurs du format de fichier de classe Java?

174

J'ai vu cette liste des numéros de version majeurs pour Java dans un autre article:

  • Java 1.2 utilise la version majeure 46
  • Java 1.3 utilise la version majeure 47
  • Java 1.4 utilise la version majeure 48
  • Java 5 utilise la version majeure 49
  • Java 6 utilise la version majeure 50
  • Java 7 utilise la version majeure 51
  • Java 8 utilise la version majeure 52
  • Java 9 utilise la version principale 53
  • Java 10 utilise la version principale 54
  • Java 11 utilise la version principale 55
  • Java 12 utilise la version principale 56
  • Java 13 utilise la version principale 57
  • Java 14 utilise la version principale 58

Références:

https://blogs.oracle.com/darcy/entry/source_target_class_file_version https://en.wikipedia.org/wiki/Java_class_file#General_layout

Robert Mark Bram
la source

Réponses:

46

Ceux-ci proviennent de la version classe. Si vous essayez de charger quelque chose de compilé pour java 6 dans un runtime java 5, vous obtiendrez l'erreur, version de classe incompatible, obtenu 50, attendu 49. Ou quelque chose comme ça.

Voir ici dans le décalage d'octet 7 pour plus d'informations.

Des informations supplémentaires peuvent également être trouvées ici .

Michael
la source
Existe-t-il un moyen de faire écho au numéro de version majeur (version de classe) directement à partir de javac , sans utiliser une classe existante comme javap -verbose MyClass,?
samis
Non, il n'y en a pas.
Stephen C
18

J'ai trouvé une liste des versions de fichier de classe Java sur la page Wikipédia qui décrit le format de fichier de classe:

http://en.wikipedia.org/wiki/Java_class_file#General_layout

Sous les décalages d'octets 6 et 7, les versions sont répertoriées à quelle machine virtuelle Java elles correspondent.

Peter
la source
2

Si vous rencontrez un problème concernant le "compilateur d'erreur du fichier de classe", il est possible de le résoudre en changeant le JRE du projet en son correspondant via Eclipse.

  1. Construire le chemin
  2. Configurer le chemin de construction
  3. Changer la bibliothèque en correspondant de la table que l'ami montre en dernier.
  4. Créez un "fichier jar", compilez et exécutez.

J'ai fait ça et ça a marché.

Jefferson1919
la source
0

Si vous avez un fichier de classe sur build/com/foo/Hello.class, vous pouvez vérifier dans quelle version java il est compilé en utilisant la commande:

javap -v build/com/foo/Hello.class | grep "major"

Exemple d'utilisation:

$ javap -v build/classes/java/main/org/aguibert/liberty/Book.class | grep major
  major version: 57

Selon le tableau de l'OP, la version principale 57 signifie que le fichier de classe a été compilé au niveau de bytecode JDK 13

Andy Guibert
la source