Elenco dei numeri di versione principali del formato file di classe Java?


174

Ho visto questo elenco dei principali numeri di versione per Java in un altro post:

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

Riferimenti:

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

Risposte:


46

Questi provengono dalla versione di classe. Se si tenta di caricare qualcosa compilato per Java 6 in un runtime Java 5, si otterrà l'errore, la versione di classe incompatibile, ottenuto 50, 49 previsto. O qualcosa del genere.

Vedi qui in byte offset 7 per maggiori informazioni.

Ulteriori informazioni sono disponibili anche qui .


C'è un modo per fare eco al numero di versione principale (versione della classe) direttamente da javac , senza usare una classe esistente come javap -verbose MyClass?
Samis,

No non c'è.
Stephen C,


2

Se si verificano problemi relativi al "compilatore di errori del file di classe", è possibile risolverlo modificando il JRE del progetto nel corrispondente tramite Eclipse.

  1. Percorso di costruzione
  2. Configura il percorso di compilazione
  3. Cambia libreria in corrispondente della tabella mostrata dall'amico per ultimo.
  4. Crea "jar file" e compila ed esegui.

L'ho fatto e ha funzionato.


0

Se hai un file di classe in build/com/foo/Hello.class, puoi verificare in quale versione di Java è stato compilato usando il comando:

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

Esempio di utilizzo:

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

Secondo la tabella del PO, la versione principale 57 indica che il file di classe è stato compilato a livello di bytecode JDK 13

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.