利用bat反編譯jar包生成源碼jar包
www.diybl.com 時間:2008-01-16 作者:佚名 編輯:本站 點擊: [評論]
-
-
反編譯所使用的工具是jad.exe,筆者的測試版本是1.5.8e,壓縮與解壓縮使用的是WinRAR
jad.exe 可反編譯一個class文件為java文件,筆者的BAT可通過此工具將一個jar包反編譯成一個完整的源碼jar包,同時生成的目錄也可以在eclipse中使用
BAT腳本見后
安裝方法如下:
復(fù)制粘貼后面的文本為一個BAT,然后與jad.exe放在同一個目錄即可(WinRAR需正確安裝)
使用方法如下: (有3種使用方法, 使用其中任意一種均可,結(jié)果是相同的)
1. 雙擊BAT,提示輸入需反編譯的jar包,請輸入完整的jar路徑
2. 直接將 jar 包拖放在bat上
3.右鍵點擊jar包,選擇打開方式,然后選擇使用該BAT來執(zhí)行
運行后的結(jié)果如下:
在jar包的同一目錄下, 將會生成一個目錄,一個jar,目錄下有兩個子目錄,一個目錄存放解壓縮后的所有class,一個目錄存放反編譯后的java文件,jar包是用源碼壓縮生成的
幾點說明:
1. 工具中使用的WinRAR是自動識別安裝路徑的,請正確安裝WinRAR
2. 工具使用的jad.exe,須與BAT放在同一目錄,或者放在PATH可搜索到的位置
3. jar包中非class文件,也會完整拷貝在源碼目錄下,方便生成源碼工程
4. 生成的目錄名與原 jar 包同名, 生成的源碼 jar 包的文件名是在原名稱中加入-src而生成, 如原 jar 包為 jdbc.jar, 則生成的目錄名為 jdbc, 而生成的源碼jar 包名則為 jdbc-src.jar
5. eclipse使用方法1, 將BAT生成的目錄放在workspace中,然后創(chuàng)建同名工程
6. eclipse使用方法2,在 eclipse 中創(chuàng)建同名工程,使用src為源文件目錄,bin為class文件目錄,然后將BAT生成的目錄拷貝在eclipse的workspace中
該BAT為 blog.csdn.net/seavers 原創(chuàng), BAT源碼僅供個人學(xué)習(xí),使用,研究,未經(jīng)本人同意,不可用于商業(yè)用途
作者: seavers
QQ: 55307885
Email : seavers@163.com
如果您在使用中有什么不懂的, 歡迎朋友們Email或QQ聯(lián)系我, 也歡迎一起討論BAT或JAVA的各種技術(shù)
BAT源碼如下: (請直接拷貝在BAT文件中)
::作者: seavers
::QQ: 55307885
::Email: seavers@163.com
::blog: blog.csdn.net/seavers (在此blog上首次發(fā)布該bat)
::功能: 反編譯jar包,生成對應(yīng)的源碼jar包,詳細(xì)說明方檔請登陸我的blog
::打開/關(guān)閉命令行顯示
@echo OFF
::::::::::::::::::::::::::::解析并設(shè)置變量::::::::::::::::::
::查找jad文件的路徑, 這里取的jad.exe, 表示從PATH中查找,如果想手工指定,需在這里修改
set JAD_PATH=jad.exe
::設(shè)置解壓出的class文件存放的位置(相對路徑)
set CLASS_PATH=bin
::設(shè)置反編譯后的java文件存放的位置(相對路徑)
set JAVA_PATH=src
::檢查JAD文件是否存在bat所在目錄下,
if exist "%~dp0jad.exe" set JAD_PATH=%~dp0jad.exe
::判斷參數(shù)個數(shù),如果沒有文件參數(shù),則報錯,這里也可以使用%~f1,也可以用%1,沒有關(guān)系,之后要去掉引號
if ""%1""=="""" (set /P JAR_PATH=請輸入要反編譯的JAR包的路徑...) else (set JAR_PATH=%~f1)
if ''%JAR_PATH:~0,1%%JAR_PATH:~0,1%''==''""'' set JAR_PATH=%JAR_PATH:~1,-1%
::獲取源代碼存放的路徑,這里取JAR包所在路徑,然后去掉".jar"作為文件夾路徑, 這里的LOCATION不能帶引號,因為下面還要追加字符)
if ""%2""=="""" (set LOCATION=%JAR_PATH:~0,-4%) elsehttp://msnpiki.msnfanatic.com/index.php/Main_Page-->
文章出處:DIY部落(http://www.diybl.com/course/3_program/java/javajs/2008116/96535.html)