美文网首页
java虚拟机之class文件说明

java虚拟机之class文件说明

作者: 吴世浩 | 来源:发表于2017-01-21 23:34 被阅读17次

    一、背景

    今天修改一个比较旧的代码,jdk1.5的项目,所以编译需要1.5的jdk,但是我从1.7上切会1.5的时候编译后的代码还是1.7的,也就是查看到二进制码0033,最后才发现是下面这里没改造成的。顺便也记载下class文件结构

    二、问题

    Paste_Image.png

    这里的编译级别没有进行修改早餐的
    查看代码的jdk版本方式,直接用文本打开class如下图所示


    Paste_Image.png

    jdk版本对应的部分型号如下

    34(对应十进制的50):JDK1.8
    33(对应十进制的50):JDK1.7
    32(对应十进制的50):JDK1.6
    31(对应十进制的49):JDK1.5
    

    idea中我电脑配置的是1.8的jdk,可是编译后的一直是1.7的效果

    class

    然后在启动tomcat报错如下:


    image.png

    最后在配置tomcat的页面:

    image.png

    这里有个jre的选项,本地是1.8的环境,编译的class是1.7的,但是怎么会报错了,高版本应该兼容低版本的。不过把这里改成1.8的就好了

    三:class文件说明

    3.1 class开头0-4
    class文件的头4歌子节称为魔术,他的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。使用魔数不是拓展名来进行识别主要是基于安全方面的考虑,因为文件的拓展名可以随意地改动。
    3.2 5-8位意义
    5-8位是Class文件的版本号,第5和第6字节是此版本号,第7和第8字节是主版本号。

    四:浩语

                                               __                                                        
                                __  _  ____ __|  |__ _____    ___
                                \ \/ \/ /  |  \  |  \\__  \  /  _ \   
                                 \     /|  |  /   Y  \/ __ \(  <_> )
                                  \/\_/ |____/|___|  (____  /\____/ 
                                                        \/     \/          
                                     任何事情都是要靠努力和用心。                                                   
    

    相关文章

      网友评论

          本文标题:java虚拟机之class文件说明

          本文链接:https://www.haomeiwen.com/subject/thlrbttx.html