樊歡 java愛好者。
Email :heydaymail@hotmail.com
Blog :http://heyday.blogone.net
2005-6-19
引言
在學習和開發JAVA項目中,我們經常會用到第三方提供的一些jar。使用這些第三方工具包,可以提高我們開發的效率,縮短開發的時間。有的第三方工具,提供詳細的使用說明和源代碼,有時有的卻不提供源代碼,使用說明也不是很詳細,這對我們使用就非常不方便。
有道是,知其然才知其所以然。有時候,我們必須讀取jar裡的打包的類。而有時還有可能要對它進行小量修改,使之適用於自己的特殊需求。
前期準備
Java反編譯工具:
強烈推薦,小穎JAVA源代碼反編譯系列專傢1.4終極版。
壓縮工具:
Winrar
(這些工具,都可以通過搜索在網絡上找到)
開始
1. 將jar包解壓
我們可以使用winrar工具將jar解壓到指定目錄
2. 反編譯class
使用 Java 反編譯工具,將class文件反編譯為java文件。(大多數反編譯工具隻提供單個class文件的反編譯,這裡推薦”小穎JAVA源代碼反編譯”工具,可以反編譯一個目錄下的所有class文件)
3. 構建項目
我們將反編譯後的java文件設為項目的源文件目錄。
將jar,及jar所需要的其它lib,作為libraries加入項目中,這樣可以保證我們的java文件可以編譯。
4. 對反編譯的java進行修改
通過反編譯的java文件,可能還有錯誤,不能編譯通過,在不影響作者原始意圖的前提下,我們必須對它進行小量修改,保證可編譯通過。
保證java文件可以編譯通過後,我們再在其基礎上進行修改,使之符合自己的需求。
5. 編譯修改的java
編譯修改後的java文件,註意的是,最好隻編譯修改的單個java文件。
編譯完成後,我們進行測試,保證修改無誤。因為JVM會先找尋classes目錄下的class文件,並率先加入,這樣我們修改編譯後的class文件,便是測試時使用的class文件。
重復這個過程,直至java達到我們的目的。
6. Jar打包
將修改生成後的class文件,替換我們將jar解壓縮目錄下的相應class文件,重新打包生成jar。
我們可以使用jar命令進行打包,也可以使用winrar工具進行打包。使用winrar工具打包時,要註意選擇壓縮文件格式為zip,並將生成的壓縮包文件的後綴名設置為jar。
替換原來的jar。再進行最後一次測試。
總結
由於Java的跨平臺性,使得java的class文件可以進行反編譯,我們可以對jar文件進行修改,使之適用於自己的需求。
對jar文件進行修改,我們必須首先獲得jar開發者的同意。
對jar文件進行修改,首先必須對反編譯的java文件比較熟悉。這就必須有良好的代碼閱讀能力,清楚作者的技術架構和開發設計思想。如果沒有把握,最好能與jar開發者聯系,提出你的需求。
對於某些java開發者來說,並不希望將自己辛辛苦苦寫的code公佈於眾,為瞭避免他人反編譯,可以使用混淆器,但也隻是增加代碼閱讀的困難性。如果不是作為商業運用,我們還是希望開發者能夠提供源代碼,互相學習探討。
關於作者
樊歡 java愛好者,您可以通過heydaymail@hotmail.com與我聯系。
Email :heydaymail@hotmail.com
Blog :http://heyday.blogone.net