通过java类文件识别JDK编译版本

类文件中第5,6,7,8四个字节是jDK版本号信息,其中5,6为小版本号;7,8为大版本号。

大版本好对应JDK版本如下:

J2SE 8 = 52 (0x34 hex),

J2SE 7 = 51 (0x33 hex),

J2SE 6.0 = 50 (0x32 hex),

J2SE 5.0 = 49 (0x31 hex),

JDK 1.4 = 48 (0x30 hex),

JDK 1.3 = 47 (0x2F hex),

JDK 1.2 = 46 (0x2E hex),

JDK 1.1 = 45 (0x2D hex).

通过java类文件识别JDK编译版本,布布扣,bubuko.com

时间: 2025-01-31 07:03:26

通过java类文件识别JDK编译版本的相关文章

idea14 maven项目 jdk编译版本无法修改

需要在pom中加入以下的内容,即可修改对应的jdk版本 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source

maven-compiler-plugin 指定jdk的版本和编码

为了让maven的jdk编译版本一致, 使用maven-compiler-plugin插件来协助管理 建议新建maven项目后的第一步就是配置该插件 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration>

java类的生命周期

类的生命周期:加载.连接(验证.准备.解析).初始化.使用.卸载主动引用(有且只有)初始化: 1.new.getstatic.putstatic.invokestatic如果类没初始化,则初始化new关键字实例化对象.读取或设置一个类的静态字段(被final修饰.*已在编译期把结果放入常量池的静态字段除外).调用一个类的静态方法  2.使用java.lang.reflect包的方法对类进行发射调用的时候,如果类没有进行过初始化,则初始化 3.当初始化一个类的时候,父类没初始化,则初始化 4.当虚

JDK Tools - wsimport: 编译 WSDL 生成 JAX-WS 规范的 Java 类

wsimport 命令是用来编译 wsdl 生成JAX-WS 规范的 Java 类的工具. 命令格式 wsimport [ options ] wsdl 命令参数 -s directory 指定源文件所在的目录. -d directory 在指定的目录生成 Java 类. -p name 指定生成的 Java 类的包路径去覆盖 WSDL 和 Schema 制定的. -wsdllocation location 指定 @WebServiceClient.wsdlLocation 的取值. -qui

JDK Tools - xjc: 将 XML Schema 编译成 Java 类

xjc 是 JAXB 将 xsd 生成 Java 类的工具. 命令格式 xjc [ options ] schema file/URL/dir/jar ... [-b bindinfo ] ... 命令参数 -d dir 在指定的目录生成 Java 类.指定的目录必须是已存在的,XJC 不会创建该目录.如果不指定该选项,则默认为当前目录. -p pkg 指定生成的 Java 类的包路径. -quiet 安静模式. -verbose 详情模式. -help 显示帮助信息. -version 显示版

深入理解Java虚拟机笔记---class类文件魔数,版本,常量池

魔数 每个class文件的头4个字节称为魔数(Magic Number),其值为:0xCAFEBASE,它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的class文件.使用魔数而不是扩展名来进行识别主要是基于安全的考虑,因为文件的扩展名可以随意地被改动. 版本号 紧接着魔的4个字节存储的是class文件的版本号:第5和第6个字节是次版本号(Minor Version),第7和第8个字节是主版本号(Major Version).java的版本是从45开始的,JDK1.1之后的每个JDK大版

jvm内存模型,java类从编译到加载到执行的过程,jvm内存分配过程

一.jvm内存模型 JVM 内存模型主要分为堆.程序计数器.方法区.虚拟机栈和本地方法栈 1.堆 1.1.堆是 JVM 内存中最大的一块内存空间. 1.2.该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中. 1.3.堆被划分为新生代和老年代,新生代又被进一步划分为 Eden 和 Survivor 区,最后 Survivor 由 From Survivor 和 To Survivor 组成. 2.程序计数器(Program Counter Register) 程序计数器是一块很小的内存

高版本的jdk编译过的项目移到低版本的JDK的eclipse中出错的问题

由于2台电脑安装的jdk版本不一样,导致从一台电脑移动项目到另一台电脑上时,运行出现了错误,错误信息如下: 主要是原先项目运行的JDK版本为1.8, 而要移过去的电脑的jdk是1.7的,首先已经把build path中的jre的版本换成了本机的1.7版本了,但是还是出现了上面的问题,上网找了一下,大致意思就是jdk的版本不一致造成的,但是真正不一致的地方是由于项目之前是在1.8版本上编译运行的,所有项目的属性中编译器的版本设定就是1.8了,所有只要这个设置与本机的JDK一样就可以了,具体设置是在

Eclipse4.7使用基础 查看编译与运行的JDK的版本

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) 首先 查看编译JDK的版本 查看运行JDK的版本   然后,czbk的视频教程中提到了一些有价值的信息,我将其总结如下 低版本编译,高版本运行是可以的. 高要爱护/兼容低 高版本编译,低版本运行不可以的.因为低不懂高的寂寞 编译的版本和运行的版本/位数都相同,都是比如1.8_64,这才最好. Java优秀,值得学习.Eclipse