¿Lista de números de versión principales del formato de archivo de clase Java?


174

Vi esta lista de números de versión principales para Java en otra publicación:

  • Java 1.2 usa la versión principal 46
  • Java 1.3 usa la versión principal 47
  • Java 1.4 usa la versión principal 48
  • Java 5 usa la versión principal 49
  • Java 6 usa la versión principal 50
  • Java 7 usa la versión principal 51
  • Java 8 usa la versión principal 52
  • Java 9 usa la versión principal 53
  • Java 10 usa la versión principal 54
  • Java 11 usa la versión principal 55
  • Java 12 usa la versión principal 56
  • Java 13 usa la versión principal 57
  • Java 14 usa la versión principal 58

Referencias

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

Respuestas:


46

Estos provienen de la versión de clase. Si intenta cargar algo compilado para java 6 en un tiempo de ejecución de java 5, obtendrá el error, la versión de clase incompatible, obtuvo 50, se esperaba 49. O algo así.

Vea aquí en el byte offset 7 para más información.

Información adicional también se puede encontrar aquí .


¿Hay alguna manera de hacer eco del número de versión principal (versión de clase) directamente de javac , sin usar una clase existente como javap -verbose MyClass,?
samis

No, no lo hay.
Stephen C


2

Si tiene algún problema sobre el "compilador de errores del archivo de clase", es posible resolver esto cambiando el JRE del proyecto a su correspondiente a través de Eclipse.

  1. Construir camino
  2. Configurar ruta de compilación
  3. Cambie la biblioteca al corresponsal de la tabla que el amigo muestra al final.
  4. Crear "archivo jar" y compilar y ejecutar.

Hice eso y funcionó.


0

Si tiene un archivo de clase en build/com/foo/Hello.class, puede verificar en qué versión de Java se compila utilizando el comando:

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

Ejemplo de uso:

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

Según la tabla en el OP, la versión principal 57 significa que el archivo de clase se compiló al nivel de código de bytes JDK 13

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.