怎么复原java项目文件_从jar包还原出java源码(项目文件)
上周接到個(gè)新任務(wù),一個(gè)遺留的接口工程需要改造,然而根據(jù)前任開發(fā)留下的文檔看,這個(gè)工程沒有代碼,只有生產(chǎn)環(huán)境的jar包供使用。。邊吐(咒)槽(罵)邊在SVN服務(wù)器上四處翻找,想找到這個(gè)工程的源碼,畢竟沒源碼怎么跑起來這個(gè)工程?不能跑起來怎么改造調(diào)試?
確認(rèn)真的找不到源碼之后。。冷靜下來開始研究這個(gè)前輩留下的坑
0. get jar包
從生產(chǎn)環(huán)境down下來jar包,打開看了一眼:
黑人問號(hào)臉。。這是啥?為什么jar包里面還有java文件?還有這種操作?
1. 初次嘗試
把jar包的內(nèi)容解壓出來之后,就想把所有的class文件刪掉,只留下java文件,這樣不就get了源碼?
結(jié)果發(fā)現(xiàn)想的太簡(jiǎn)單了,從上面的截圖就能看出,class文件在2010年的5月25號(hào)有更新,而java文件是2010年3月31號(hào)更新的,這就說明class文件比java文件更新,所以這些java文件都是過期的。。【坑啊
2. 再次嘗試
如果只有一個(gè)class文件,怎么查看java代碼這個(gè)很簡(jiǎn)單,平時(shí)用JD-GUI或類似的反編譯工具就可以了,但印象中只能一個(gè)文件一個(gè)文件的看,我手里有一個(gè)jar包可怎么還原源碼導(dǎo)進(jìn)MyEclipse啊。。
去google了半天,都沒有找到好的答案(事后發(fā)現(xiàn)了答案,和我的做法相同)
一陣沮喪,然后無聊打開了JD-GUI,打開jar包后,隨手點(diǎn)到了左上角的File,咦??
發(fā)現(xiàn)了一個(gè)save!一陣興奮,然后點(diǎn)了保存試了一下,發(fā)現(xiàn)導(dǎo)出來的zip文件就是反編譯后的整個(gè)源碼!
3. 小問題
打開zip文件看了一眼,發(fā)現(xiàn):
因?yàn)閖ar包里面有同名的class文件和java文件,導(dǎo)出來的反編譯源碼也保留了舊的java文件在里面(從文件時(shí)間可以看出)
4. 解決小問題
這里用了壓縮軟件的命令,我平時(shí)用的是7-ZIP,簡(jiǎn)單搜索學(xué)習(xí)了一下,步驟如下:
a. 將7-ZIP的目錄配置到系統(tǒng)環(huán)境變量(PATH)中
b. 打開命令行,到j(luò)ar包所在目錄
c. 執(zhí)行命令
7z?d?xxx.jar?*.java?-r
效果如圖:
5. 重新保存源碼
刪除了原jar包中的java文件后,再次用JD-GUI保存反編譯源碼文件,搞定
6. 最后
歡聲笑語中獲得了源碼后,發(fā)現(xiàn)想啟動(dòng)這個(gè)項(xiàng)目還有些小麻煩,不過跟不知道怎么從jar包還原出工程源碼相比,都是小問題了!
總結(jié)
以上是生活随笔為你收集整理的怎么复原java项目文件_从jar包还原出java源码(项目文件)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天猫服务系统的架构和经验
- 下一篇: 内容可编辑_让PDF像WORD一样自由编