查询class文件编译级别

本文提供了一个简单的Java程序,用于检测.class文件的Java版本信息。通过读取特定文件并解析其字节码,可以获取该文件对应的Java主版本号和次版本号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

package test;

import java.io.FileInputStream;

public class JavaVersionUtil {

private static final String str = "test.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);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值