`

用javap查看编译版本

jdk 
阅读更多

我们可以用javap命令查看class文件的编译版本。
比如对Worke.class使用javap命令:javap -verbose Worker
我将看到Worker的反编译结果。其中前几行如下:
Compiled from "Worker.java"
public class com.teleca.robin.Worker extends java.lang.Thread
SourceFile: "Worker.java"
minor version: 0
major version: 49
Constant pool:
上面的minor version: 0和major version: 49就是编译Worke.class时使用的jdk编译版本号。
但是它并不是我们所熟悉的jdk版本号(比如jdk1.5)。
不过我们可以把从 JDK 1.1 到 JDK 1.7 编译器编译出的 class 的默认 minor.major version 汇总下就知道对应关系了。
JDK 编译器版本 target 参数 十六进制 minor.major 十进制 minor.major
jdk1.1.8 不能带 target 参数 00 03 00 2D 45.3
jdk1.2.2 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.2.2 -target 1.2 00 00 00 2E 46.0
jdk1.3.1_19 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.3.1_19 -target 1.3 00 00 00 2F 47.0
j2sdk1.4.2_10 不带(默认为 -target 1.2) 00 00 00 2E 46.0
j2sdk1.4.2_10 -target 1.4 00 00 00 30 48.0
jdk1.5.0_11 不带(默认为 -target 1.5) 00 00 00 31 49.0
jdk1.5.0_11 -target 1.4 -source 1.4 00 00 00 30 48.0
jdk1.6.0_01 不带(默认为 -target 1.6) 00 00 00 32 50.0
jdk1.6.0_01 -target 1.5 00 00 00 31 49.0
jdk1.6.0_01 -target 1.4 -source 1.4 00 00 00 30 48.0
jdk1.7.0 不带(默认为 -target 1.6) 00 00 00 32 50.0
jdk1.7.0 -target 1.7 00 00 00 33 51.0
jdk1.7.0 -target 1.4 -source 1.4 00 00 00 30 48.0
Apache Harmony 5.0M3 不带(默认为 -target 1.2) 00 00 00 2E 46.0
Apache Harmony 5.0M3 -target 1.4 00 00 00 30 48.0

注1:javac 有个 -target 参数,编译时可以通过target参数来设置编译时所使用的jdk版本。比如如果目标 JVM 是 1.3 的话,编译选项就可以用 -target 1.3 -source 1.3 了。
相应的如果使用 ant ,编译时可以通过target参数来设置编译时所使用的jdk版本。比如:
<javac target="1.4" source="1.4" ............................/>
注2:javac中source和target 的意义
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
source才是真正的指明代码的兼容性,target则是指定了生成class的格式的版本号,即生成特定 VM 版本的类文件。

分享到:
评论

相关推荐

    javap使用(1).docx

    如何使用javap反编译字节码

    jar包反编译jd-gui和eclipe反编译工具和插件

    jar包反编译工具jd-gui和eclipe反编译工具和插件.可用

    javap使用说明文档

    源文件 ---javac编译--&gt; 字节码文件. 字节码文件 --javap反编译--&gt; 源文件.

    java反编译的一个小工具

    NULL 博文链接:https://glamey.iteye.com/blog/987463

    JD-GUI,JDGUI,java反编译工具

    JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台 Javap 问:javap是反编译,还是反汇编? 答:javap是JDK自带的反汇编器。 (它的作用就是根据...

    jad.exe-windows版本,将.class文件反编译为java文件(专业)

    jad.exe-windows版本,将.class文件反编译为java文件(专业) 使用 java自带的javap -p 名称.class反编译的有可能不正确,例如反编译Enum枚举,所以我们需要使用更加专业的工具

    windows命令行中java和javac、javap使用详解(java编译命令)

    最近重新复习了一下java基础,这里便讲讲对于一个类文件如何编译、运行、反编译的。也让自己加深一下印象

    eclipse.BytecodeOutline插件

    在遇到一些小问题的时候我们经常会使用Javap反编译取得字节码来分析,虽然Javap能完成这个工作,但是有两个缺点,一方面操作麻烦,需要很多步骤,一方面没有文档注释,对新手来说看起字节码来比较麻烦。这里推荐一个...

    HelloWorld的javap -verbose HelloWorld 字节码初探

    NULL 博文链接:https://josephmok.iteye.com/blog/813774

    ByteCode Outline

    在遇到一些小问题的时候我们经常会使用Javap反编译取得字节码来分析,虽然Javap能完成这个工作,但是有两个缺点,一方面操作麻烦,需要很多步骤,一方面没有文档注释,对新手来说看起字节码来比较麻烦。 这里推荐...

    jad- java反编译软件

    jad.exe- java反编译软件 一个类似于javap的java反编译... 下载jad.exe后复制到jdk/bin目录下,就可以像javap一样使用了。 在命令行中执行jad -p &gt; tmp.java 后,tmp.java文件的内容即为反汇编后实际执行的java代码。

    eclipse配置javap命令的方法

    本篇文章主要介绍了如何为eclipse配置javap命令,在配置过程中会出现的小问题的解决方法,非常实用,需要的朋友可以参考下

    java教程之java程序编译运行图解(java程序运行)

    最近重新复习了一下java基础,在使用javap的过程中遇到了一些问题,这里便讲讲对于一个类文件如何编译、运行、反编译的。也让自己加深一下印象

    CodingStudy:与2019 SDS开发人员进行编码研究

    IntelliJ移位可以看到两倍的字节码您可以使用javap -c查看字节码从Java 8添加了默认静态方法如果在接口中未指定static final或abstract,则将自动附加并编译它。 接口也可以继承,如果方法名称相同,返回类型不同,...

    Jave:随机的Java东西

    一些示例包括编译代码块,然后使用javap查看它,以帮助使用ASM插入代码,并通常与JVM混为一谈。 例如, Void , Void_和Void3都是我创建和调用参数类型为void方法的一部分。 我把Int.java和Int.class搞砸了,将堆栈...

    javaclass和源码-deep-in-jvm:简单的借助jdk中的内置工具帮助我们对比Java源码和生成的字节码以及探究Class文件字节

    使用方法 编写Java源码,如项目目录中的Main.java: 运行javac编译成字节码 javac -g:vars Main.java 编译生成LocalVariableTable(局部变量表) 运行javap分析Class文件字节码 javap -verbose Main &gt; Main.bytecode ...

    jsp小示例显示日期

    JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将...Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具

    JDK1.8(32位和64位)正式版+JDK1.8API帮助文档

    JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。没有JDK的话,无法编译...Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具

    jdk-6u45-windows-i586 & x64

    jdk1.6安装教程及环境变量配置: 双击运行"jdk-6u45-windows-x64.exe"程序,依...Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具结构图

    ExtendJ-Mapper:ExtendJ的扩展,可将字节码映射到源代码

    然后,运行javap -verbose -c compiled_file.class &gt; decompiled_file.txt created_file.class javap -verbose -c compiled_file.class &gt; decompiled_file.txt来反编译.class文件。 此时,进入byte

Global site tag (gtag.js) - Google Analytics