一、簡介
項目發佈上線後,代碼將由java文件轉為class文件。當項目運行中出現問題或與實際代碼不一致時,此時需要確認運行中的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.java
2.2 javap
將class文件反編譯為彙編語言,常用命令有:
格式:javap <options> <classes>
常用參數:
-v: 輸出行號、本地變量表、反編譯彙編代碼、當前類用的常量池等
示例:
#反編譯out/Stu.class文件,輸出包含彙編代碼、當前類常量等信息
javap -v out/Stu
2.3 jad
jad為外部的反編譯工具,可以把class文件反編譯為java文件(默認文件後綴為.jad,可指定後綴為.java),多個文件支持通配符(如*class)。如果源文件包含中文,將會轉為unicode編碼(此時可藉助jdk工具native2ascii將unicode轉為中文)。
2.3.1 jad安裝
下載地址為:
http://www.javadecompilers.com/jad
2.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
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/225102.html