方法一、javap命令
javap命令可以用于反编译java class文件。查看jar包的编译版本首先是将jar包解压,然后再选择其中一个class文件,查看major版本号
Java 1.2 uses major version 46
Java 1.3 uses major version 47
Java 1.4 uses major version 48
Java 5 uses major version 49
Java 6 uses major version 50
Java 7 uses major version 51
Java 8 uses major version 52
Java 9 uses major version 53
1. linux终端命令
$ javap -verbose MyClass | grep "major"
2. windows终端命令
$ javap -verbose MyClass | findstr "major"
public class Test {
@Override
public String toString() {
return "I'm class of Test";
}
}
a)编译测试1.6
$ javac -source 1.6 -target 1.6 Test.java
warning: [options] bootstrap class path not set in conjunction with -source 1.6
1 warning
$ javap -verbose Test.class | grep 'major'
major version: 50
b)编译测试1.8
$javac -source 1.8 -target 1.8 Test.java
$ javap -verbose Test.class | grep 'major'
major version: 52
方法二、根据class文件结构直接查看二进制码
class文件的二进制布局如下:
占位大小(byte字节) | 说明 | 备注 |
4 | 魔法数字,一般用来标识改文件为class文件 | CAFEBABE固定值 |
2 | 较小版本的使用,可是值一直为00 | 本人还没明白意义 |
2 | class主要支持的格式版本 | |
java1.6编译的
java1.8编译的class文件
总结
一般只需要用javap命令就好了,可读性比较强
参考资料