代码发布到服务器后,可能由于长时间没有操作,忘记了最初服务器中的JDK编译版本,可能会导致本地编译的class文件与服务器版本不一致,每当这时都会想如果能检测一下class文件编译时采用的JDK版本就好了,因此有了下列代码:
package com.goma.util; import java.io.FileInputStream; import java.util.HashMap; import java.util.Map; public class JavaVersionUtil { private static Map<String, String> JDK_VERSION = null; static{ JDK_VERSION = new HashMap<String, String>(); JDK_VERSION.put("50.0", "6.0"); JDK_VERSION.put("49.0", "5.0"); JDK_VERSION.put("46.0", "1.4"); JDK_VERSION.put("45.3", "1.3"); } /** * DESC:获得.class文件编译时采用的JAVA版本 * @param fileDir * @return * @throws Exception */ public static String getVersion(String fileDir) throws Exception { FileInputStream fis = new FileInputStream(fileDir);//读取文件数据 int length = fis.available();//获得文件字符长度 byte[] data = new byte[length];//文件数据 fis.read(data);//读取文件到字节数组 fis.close();//关闭文件 int major_version = (((int) data[6]) << 8) + data[7];//主版本号 int minor_version = (((int) data[4]) << 8) + data[5];//次版本号码 String version = major_version + "." + minor_version; return version; } /** * DESC:获得.class文件编译时采用的JDK版本 * @param fileDir * @return * @throws Exception */ public static String getJdkVersion(String fileDir) throws Exception{ String version = getVersion(fileDir); return JDK_VERSION.get(version); } }