Class 파일 컴파일 JDK 버전 검사

1745 단어 Class 파일
코드가 서버에 발표된 후 오랫동안 조작하지 않아서 최초의 서버에 있는 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);
	}
}


좋은 웹페이지 즐겨찾기