找出 Java 类文件的编译器版本

逆向工程 编译器 爪哇
2021-06-15 07:36:04

我有一个java类文件。如何找出用于编译此文件的编译器的版本?我在 Ubuntu Server 12.04 上。

3个回答

JDK 包括一个javap命令。它提供了很多信息,但您可以像这样使用它:

javap -verbose yourClass | grep version

示例输出:

  minor version: 0
  major version: 51

主要版本告诉您编译器的版本:

J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

同样,它所基于file(1)实用程序 andlibmagic(3)可以成为您的朋友:

$ file Gwan.class
Gwan.class: compiled Java class data, version 50.0 (Java 1.6)

您正在命令行上查找此内容(对于名为 MyClass 的类):

在 Unix/Linux 上:

javap -verbose MyClass | grep "major"

在 Windows 上:

javap -verbose MyClass | findstr "major"

您需要结果中的主要版本。以下是一些示例值:

  • Java 1.2 使用主要版本 46
  • Java 1.3 使用主要版本 47
  • Java 1.4 使用主要版本 48
  • Java 5 使用主要版本 49
  • Java 6 使用主要版本 50
  • Java 7 使用主要版本 51
  • Java 8 使用主要版本 52