您的位置:首页 > 其它

查看class文件版本

2013-05-14 14:23 218 查看
import java.io.*;

public class ClassV {

public static void main(String[] args) throws IOException {

for (int i =0 ; i < args.length; i++)

checkClassVersion(args[i]);

}

private static void checkClassVersion(String filename)

throws IOException

{

DataInputStream in = new DataInputStream

(new FileInputStream(filename));

int magic =in.readInt();

if (magic !=0xcafebabe) {

System.out.println(filename+" is not a valid class!");;

}

int minor =in.readUnsignedShort();

int major =in.readUnsignedShort();

System.out.println(filename+": "+major + " . "+minor);

in.close();

}



}



import java.io.*;

public class ClassV {
	public static void main(String[] args) throws IOException {
		for (int i =0 ; i < args.length; i++)
			checkClassVersion(args[i]);

}
	private static void checkClassVersion(String filename)
	throws IOException
{
	DataInputStream in = new DataInputStream
		(new FileInputStream(filename));

		int magic =in.readInt();
		if (magic !=0xcafebabe) {
		System.out.println(filename+" is not a valid class!");;
}
	int minor =in.readUnsignedShort();
	int major =in.readUnsignedShort();
	System.out.println(filename+": "+major + " . "+minor);
	in.close();
}

}




import java.io.*;

public class ClassV {

public static void main(String[] args) throws IOException {

for (int i =0 ; i < args.length; i++)

checkClassVersion(args[i]);

}

private static void checkClassVersion(String filename)

throws IOException

{

DataInputStream in = new DataInputStream

(new FileInputStream(filename));

int magic =in.readInt();

if (magic !=0xcafebabe) {

System.out.println(filename+" is not a valid class!");;

}

int minor =in.readUnsignedShort();

int major =in.readUnsignedShort();

System.out.println(filename+": "+major + " . "+minor);

in.close();

}



}





使用DJ J***A Decompler

在DJ Java Decompiler的菜单中View->class version info,就会弹出对话框如:

Major Version: 49

Minor Version: 0

使用J***AP(JDK自带的工具)

javap -verbose MyClass

结果如下:

Compiled from “MyClass.java”

public class MyClass extends java.lang.Object

SourceFile: “MyClass.java”

minor version: 3

major version: 45

# javap -verbose VClassServlet |grep version

# minor version: 0

# major version: 49

import java.io.FileInputStream;

public class JavaVersionUtil {

private static final String str = "C:/Users/Administrator/Desktop/DBUtil.class";

// 版本号对应:

// 5.0

// 版本号(version):49.0

// 6.0

// 版本号(version):50.0

// 1.4

// 版本号(version):46.0

// 1.3

// 版本号(version):45.3

public static void main(String args[]) {

try {

// 读取文件数据,文件是当前目录下的First.class

FileInputStream fis = new FileInputStream(str);

int length = fis.available();

// 文件数据

byte[] data = new byte[length];

// 读取文件到字节数组

fis.read(data);

// 关闭文件

fis.close();

// 解析文件数据

parseFile(data);

} catch (Exception e) {

System.out.println(e);

}

}

private static void parseFile(byte[] data) {

// 输出魔数

System.out.print("魔数(magic):0x");

System.out.print(Integer.toHexString(data[0]).substring(6)

.toUpperCase());

System.out.print(Integer.toHexString(data[1]).substring(6)

.toUpperCase());

System.out.print(Integer.toHexString(data[2]).substring(6)

.toUpperCase());

System.out.println(Integer.toHexString(data[3]).substring(6)

.toUpperCase());

// 主版本号和次版本号码

int minor_version = (((int) data[4]) << 8) + data[5];

int major_version = (((int) data[6]) << 8) + data[7];

System.out.println("版本号(version):" + major_version + "."

+ minor_version);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: