Class文件版本随意看
来源:互联网 发布:ubuntu 安装povray 编辑:程序博客网 时间:2024/06/07 06:55
转载请注明出处:http://blog.csdn.net/sunyujia/
最近一直在忙工作,工作之余打psp,很久不打理博客了,前天想查一个class文件的编译版本,感觉很麻烦,需要看16进制,于是昨天晚上写了个小工具,就几行代码,没什么研究价值,贴出来主要是为了方便大家使用.以后就不用看16进制了.
全部版本号请看 http://blog.csdn.net/sunyujia/archive/2008/01/06/2027399.aspx
本程序下载地址
http://download.csdn.net/source/841562
使用图示:
源码如下:
- package com.syj;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- /**
- * <p>
- * Title: Class文件解析器
- * </p>
- *
- * <p>
- * Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/
- * </p>
- *
- * @author 孙钰佳
- * @main sunyujia@yahoo.cn
- * @date Dec 4, 2008 9:27:10 PM
- */
- public class ClassFileParser {
- /**
- *
- * Description:解析类文件主要方法
- *
- * @param file
- * @return
- * @throws IOException
- * @mail sunyujia@yahoo.cn
- * @since:Dec 4, 2008 9:31:41 PM
- */
- public static ClassInfo parse(File file) throws IOException {
- FileInputStream fis = null;
- byte[] rs = null;
- try {
- fis = new FileInputStream(file);
- rs = new byte[8];
- fis.read(rs);
- } finally {
- if (fis != null)
- fis.close();
- }
- // System.out.println("Class文件前8字节: " + byte2HexString(rs));
- ClassInfo classInfo = new ClassInfo();
- classInfo.setMajorVersion(Integer.parseInt(
- byte2HexString(new byte[] { rs[7] }), 16));
- classInfo.setMinorVersion(Integer.parseInt(
- byte2HexString(new byte[] { rs[5] }), 16));
- classInfo.setFilePath(file.getAbsolutePath());
- classInfo.setDevVersion(getDevVersion(classInfo.getMajorVersion()));
- return classInfo;
- }
- /**
- *
- * Description:byte数组转化为十六进制
- *
- * @param b
- * @return
- * @mail sunyujia@yahoo.cn
- * @since:Dec 4, 2008 10:47:31 PM
- */
- public static String byte2HexString(byte[] b) {
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < b.length; i++) {
- String hex = Integer.toHexString(b[i] & 0xFF);
- if (hex.length() == 1) {
- hex = '0' + hex;
- }
- sb.append(hex.toUpperCase());
- }
- return sb.toString();
- }
- /**
- *
- * Description:根据major主版本号计算开发主版本号
- *
- * @param m
- * @return
- * @mail sunyujia@yahoo.cn
- * @since:Dec 4, 2008 10:48:29 PM
- */
- public static String getDevVersion(int m) {
- int major = 45;
- int devVersion = 1;
- return String.valueOf(devVersion + ((m - major + 1) / 10f));
- }
- }
- package com.syj;
- public class ClassInfo {
- /**
- * 主版本号
- */
- private int majorVersion;
- /**
- * 次版本号
- */
- private int minorVersion;
- /**
- * class文件路径
- */
- private String filePath;
- /**
- * 开发版本
- */
- private String devVersion;
- public int getMajorVersion() {
- return majorVersion;
- }
- public void setMajorVersion(int majorVersion) {
- this.majorVersion = majorVersion;
- }
- public int getMinorVersion() {
- return minorVersion;
- }
- public void setMinorVersion(int minorVersion) {
- this.minorVersion = minorVersion;
- }
- public String getFilePath() {
- return filePath;
- }
- public void setFilePath(String filePath) {
- this.filePath = filePath;
- }
- public String toString() {
- return "major.minor: " + majorVersion + "." + minorVersion + " 开发版本: "
- + devVersion;
- }
- public String getDevVersion() {
- return devVersion;
- }
- public void setDevVersion(String devVersion) {
- this.devVersion = devVersion;
- }
- }
- package com.syj;
- import java.io.File;
- /**
- * <p>
- * Title: 查看class文件版本程序入口
- * </p>
- * <p>
- * Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/
- * </p>
- *
- * @author 孙钰佳
- * @main sunyujia@yahoo.cn
- * @date Dec 4, 2008 9:26:39 PM
- */
- public class Runner {
- public static void main(String[] args) throws Exception {
- if (args == null || args.length == 0) {
- System.out.println("没有指定文件");
- } else {
- ClassInfo classInfo = ClassFileParser.parse(new File(args[0]));
- System.out.println(classInfo);
- }
- }
- }
启动程序批处理源码:
- @echo off
- mode con: cols=110 lines=15
- :index
- color 27
- cls
- echo.
- echo 欢迎使用查看class文件版本小工具
- echo 我的博客:http://blog.csdn.net/sunyujia/
- echo 将class文件拖拽到此窗口后,点击窗口后敲回车.即可显示编译目标class文件的jdk版本
- echo.
- echo.
- set route=%cd%
- set ravel=
- set /p ravel= 请拖入要查看的class文件:
- set "ravel=%ravel:"=%"
- if /i "%ravel:~-6%"==".class" if exist "%ravel%" goto go
- cls
- echo 文件错误,指定文件不存在或不是class文件!
- echo 按任意键重新输入...
- echo.
- echo.
- echo 按任意键重新输入...
- pause >nul
- goto index
- :go
- java -jar VersionViewer.jar %ravel%
- echo.
- echo 按任意键退出...
- pause >nul
- exit
- Class文件版本随意看
- 从 class 文件看 jdk 版本
- CLASS文件版本管理
- Class 文件版本察看
- class文件版本问题
- 查看class文件版本
- 查看class文件版本
- .class文件JDK版本
- 查看class文件的版本
- 读取CLASS文件JDK版本
- class文件JDK版本查看
- 查看Class文件的JDK版本
- 查看class文件的编译jdk版本
- 如何确认class文件的jdk版本
- 通过.class文件查看JDK版本
- 通过.class文件查看JDK版本
- 通过.class文件查看JDK版本
- 查看class文件的jdk版本
- Learning PHP & MySQL: Step-by-Step Guide to Creating Database-Driven Web Sites [ILLUSTRATED]
- FFmpeg Understanding(4. How to compile and run testing files utilizing FFMPEG in VC?)
- Mastering System Center Operations Manager 2007
- RMAN Recipes for Oracle Database 11g: A Problem-Solution Approach
- Building Spring 2 Enterprise Applications
- Class文件版本随意看
- Aspect-Oriented Programming with the e Verification Language: A Pragmatic Guide for Testbench Develo
- ACE:Reactor框架--处理事件及多个I/O流
- Professional Community Server Themes
- Beginning Spring 2: From Novice to Professional
- The Shellcoder's Handbook: Discovering and Exploiting Security Holes
- Beginning PL/SQL: From Novice to Professional
- Ultraedit语法高亮显示
- 在C#中,比较两个数组的不同值.输出出来对于日常.NET编程比较实用