查看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();
}
}
使用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);
}
}
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);
}
}
相关文章推荐
- 如何查看Class文件编译的JDK版本
- 根据查看Class文件的了解jdk版本
- 如何查看class文件的jdk版本
- 如何查看一个class文件,是jdk什么版本的编译器编译的?
- 通过.class文件查看JDK版本
- 如何查看class文件的jdk版本
- eclipse3.7版本中反编译class文件查看源码
- 如何查看Class文件编译的JDK版本
- CMD中查看CLASS文件编译的JDK版本
- 如何查看class文件对应的JDK版本
- 查看class文件版本
- 【参考】.class文件的JDK编译版本查看
- 如何查看class文件的jdk版本
- 如何查看.class文件的JDK编译版本
- 查看.class文件编译JDK版本 1.3/1.4/1.5/1.6 UE
- 如何查看class文件的jdk版本
- 查看class文件的编译jdk版本
- 通过编译后的class文件查看jdk的版本
- 查看Class文件的JDK版本
- IT忍者神龟之查看.class文件编译JDK版本 1.3/1.4/1.5/1.6 UE