方法一、javap命令
javap命令可以用于反编译java class文件。查看jar包的编译版本首先是将jar包解压,然后再选择其中一个class文件,查看major版本号
ou're looking for this on the command line (for a class called MyClass):
1. linux终端命令
$ javap -verbose MyClass | grep "major"
On Unix/Linux:
$JAVA_HOME/bin/javap -verbose MyClass | grep "major"
2. windows终端命令(注:需要配置环境变量到javap下面,或者在D:\Program Files\Java\jdk1.8.0_144\bin 下面运行,路径根据自己安装的jdk替换。)
$ javap -verbose MyClass | findstr "major"
On Windows:
%JAVA_HOME/bin/javap -verbose MyClass | findstr "major"
You want the major version from the results. Here are some example values:
- 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
- .....
例如:
$ javap -verbose Test.class | grep 'major'
major version: 50
方法二、根据class文件结构直接查看二进制码
class文件的二进制布局如下:
占位大小(byte字节) | 说明 | 备注 |
4 | 魔法数字,一般用来标识改文件为class文件 | CAFEBABE固定值 |
2 | 较小版本的使用,可是值一直为00 | 本人还没明白意义 |
2 | class主要支持的格式版本 | |
java1.6编译的
java1.8编译的class文件
总结
一般只需要用javap命令就好了,可读性比较强