我们可以用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 版本的类文件。
- 浏览: 112735 次
- 性别:
- 来自: 南通
最新评论
-
java_bigniu:
ls -alrm -rf .xx.swf
Tomcat+Apache集群配置
相关推荐
- **版本兼容性**:不同的 JDK 版本可能会有不同的 `javap` 输出格式和功能。 - **安全性**:不要随意反编译未知来源的 `.class` 文件,以免引入潜在的安全风险。 #### 八、总结 `javap` 是一个强大的工具,可以...
jar包反编译工具jd-gui和eclipe反编译工具和插件.可用
虽然反编译不能完全恢复原始源代码,尤其是当原代码使用了混淆技术时,但它能提供一个接近原始逻辑的近似版本。 描述中提到的博客链接指向了一个名为“glamey”的作者在iteye上的博客文章,该文章详细介绍了如何...
javap 使用说明文档 javap 是 JDK 中的一个命令行工具,主要用于对给定的 class 文件进行反编译,了解 Java 编译器内部的工作机制,并提高程序执行的效率。下面是 javap 的使用说明。 1. javap 的基本用法 javap ...
`javap`是Java Platform Debugger Architecture的一部分,它能帮助开发者查看Java类文件的编译后细节,包括字节码、常量池、局部变量表等信息。 在描述中提到的链接是一个博客文章,可能详细解释了如何使用`javap -...
此外,还学习了如何使用`javap`命令来查看字节码文件的具体内容,这对于理解Java程序在底层的运行机制非常重要。 以上就是关于Java运行原理及javap命令运行结果的相关知识点的详细介绍。希望对你有所帮助!
经过该工具反汇编后得到的结果并不是源代码,但是使用javap进行反编译的Java类文件可以得到成员变量、方法、行号以及局部变量名等信息。 代码混淆 代码混淆是保护Java程序的一种方法,即将源代码混淆,使其难以被...
JDK自带了一个简单的反编译工具——`javap`,它主要用于查看类文件的元数据,如方法签名、常量池等。但`javap`并不提供完整的源代码反编译功能,对于想要阅读类库源代码的开发者来说,它的能力有限。因此,我们需要...
JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台 Javap 问:javap是反编译,还是反汇编? 答:javap是JDK自带的反汇编器。 (它的作用就是根据...
1. javap:Java自带的反编译工具,它可以从.class文件中提取关于方法的元信息,但不会反编译成完整源代码。 2. Jad:一个流行的第三方反编译工具,能够将.class文件反编译成可读性较好的Java源代码。Jad在Linux下...
2. **版本号**:包含Java字节码版本和类文件版本,反映了编译时使用的JDK版本。 3. **常量池**:存储字符串、类引用、方法引用等元数据的地方,是字节码解析的关键。 4. **访问标志**:表明类或接口的访问权限,如...
总结来说,要利用Windows命令行正确地编译、运行和反编译Java类文件,需要了解命令行的基本操作,正确安装和配置JDK,以及熟悉javac、java和javap这三个命令的具体选项和使用场景。通过这样的过程,我们可以更深入地...
javap 命令是 JDK 自带的一个工具,它可以对代码反编译,也可以查看 Java 编译器生成的字节码,对代码的执行过程进行分析,了解 JVM 内部的工作。javap 命令可以将 class 文件反编译成易于阅读的格式,展示类的结构...
但是,Javap的反编译能力相对有限,只提供简单的汇编视图,而JD-GUI则提供了更友好的图形用户界面,使得查看和操作反编译结果更加直观。 使用JD-GUI的步骤通常包括: 1. 打开JD-GUI应用程序。 2. 通过文件菜单或...
"jd-gui"是一款小巧且易于使用的Java反编译工具,它提供了一个图形化的用户界面,允许开发者直观地查看和分析.class文件。jd-gui支持直接打开.jar或.class文件,显示反编译后的源代码,同时提供代码高亮、折叠等功能...
本文将详细介绍如何在Eclipse中配置`javap`命令,以便在开发过程中方便地查看和理解Java字节码。 首先,`javap`命令的主要用途是对Java类文件进行反编译,它能够揭示Java虚拟机(JVM)如何处理我们的源代码。例如,当...
jad.exe-windows版本,将.class文件反编译为java文件(专业) 使用 java自带的javap -p 名称.class反编译的有可能不正确,例如反编译Enum枚举,所以我们需要使用更加专业的工具
这可以通过Java的“javap”命令行工具简单查看,或者从已打包的.jar文件中提取。 2. 打开jd-gui.exe,它会显示一个文件选择对话框,从中选择包含要反编译的.class文件的目录。 3. 一旦选中,jd-gui会列出所有可反...
- 在使用反编译工具时,通常需要先通过`javap`(Java自带的字节码反汇编工具)进行初步分析。 - 对于复杂的库,可能需要结合多种工具和技巧来获取更完整的源代码视图。 总结来说,Java反编译工具在特定情况下是...
在Java开发环境中,如JDK已经安装,那么你可以使用内置的`javap`命令来查看简单的反编译信息。`javap`是JDK自带的一个命令行工具,它能够显示类、接口和它们的属性、方法的详细信息。但这只是一个基本的反编译器,...