Java类文件格式的主要版本号列表?


173

我在另一篇文章中看到了Java的主要版本号列表:

  • Java 1.2使用主要版本46
  • Java 1.3使用主要版本47
  • Java 1.4使用主要版本48
  • Java 5使用主要版本49
  • Java 6使用主要版本50
  • Java 7使用主要版本51
  • Java 8使用主要版本52
  • Java 9使用主要版本53
  • Java 10使用主要版本54
  • Java 11使用主要版本55
  • Java 12使用主要版本56
  • Java 13使用主要版本57
  • Java 14使用主要版本58

参考文献:

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

Answers:


45

这些来自类版本。如果尝试在Java 5运行时中加载为Java 6编译的内容,则会得到错误,类版本不兼容,错误50,期望值49。或者类似的错误。

有关更多信息,请参见此处的字节偏移7。

其他信息也可以在这里找到。


有没有一种方法可以直接从javac回显主要版本号(类版本),而无需使用现有的类,如javap -verbose MyClass
samis

不,没有。
斯蒂芬C,


2

如果您对“类文件的错误编译器”有疑问,可以通过Eclipse将项目的JRE更改为其对应的JRE来解决。

  1. 建立路径
  2. 配置构建路径
  3. 将库更改为好友最后显示的表的通讯员。
  4. 创建“ jar文件”并编译并执行。

我做到了,它奏效了。


0

如果您在中有一个类文件build/com/foo/Hello.class,则可以使用以下命令检查其编译的Java版本:

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

用法示例:

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

根据OP中的表格,主要版本57表示该类文件已编译为JDK 13字节码级别

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.