当项目运行中出现问题或与实际代码不一致时,此时需要确认运行中的class文件是否正确等 *** 作,接下来就需要对class文件进行 *** 作。
这里基于一些常用命令进行介绍。
二、使用class文件 *** 作的常用命令,位于jdk的bin目录下的javac、javap等,以及外部工具jad。
2.1 javac将java文件编译为class文件(多个文件用空格隔开),常用命令有:格式:javac <options> <source files>常用参数:-d: 输出目录-target:输出jvm版本-source: 输入jdk版本示例:#编译src目录下的Stu.java文件,jdk版本为1.8,运行jvm版本为1.8,生的class文件位于out目录下javac -d out -source 1.8 -target 1.8 src/Stu.java2.2 javap将class文件反编译为汇编语言,常用命令有:格式:javap <options> <classes>常用参数:-v: 输出行号、本地变量表、反编译汇编代码、当前类用的常量池等示例:#反编译out/Stu.class文件,输出包含汇编代码、当前类常量等信息javap -v out/Stu2.3 jadjad为外部的反编译工具,可以把class文件反编译为java文件(默认文件后缀为.jad,可指定后缀为.java),多个文件支持通配符(如*class)。
如果源文件包含中文,将会转为unicode编码(此时可借助jdk工具native2ascii将unicode转为中文)。
2.3.1 jad安装下载地址为:http://www.javadecompilers.com/jad2.3.2 常用命令格式:jad [option(s)] <filename(s)>常用参数:-d : 指定输出文件目录-s : 指定输出文件扩展名,默认.jad-p : 反编译结果输出到标准输出示例:#将out目录下的Stu.class反编译为后缀是.java的位于out目录下的文件bin/jad -d out -s java out/Stu.class#将out目录下的Stu.class反编译后直接输出到标准输出bin/jad -p out/Stu.class三、备注前边提到用于unicode和中文互转的jdk工具native2ascii,这里简单介绍下:格式:native2ascii -[option] [inputfile [outputfile]]参数:-reverse: 将unicode文件转为指定编码文件(不加该参数表示源文件转为unicode文件)-encoding: 转为指定编码(如gbk)示例:#将Stu.java文件转为gbk文件native2ascii -reverse -encoding gbk Stu.java Stu_gbk.java#将Stu.java文件转为utf8文件native2ascii -reverse -encoding utf8 Stu.java Stu_utf8.java#Stu_utf8.java文件转为unicode文件native2ascii -encoding utf8 Stu_utf8.java Stu_unicode.java
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)