由于工作需要,可能會涉及到一些需要對第三方的一些jar包與源碼進行修改的情況,這個時候javaassist就可以派上用場。
javaassist是一個開源的編輯、修改、建立位元組碼的類庫,它在jboos項目的aop架構中發揮了很大的作用。不過我們這次僅僅使用它的修改class的功能。
<a target="_blank" href="http://pan.baidu.com/s/1qxe1bgw">testjar.jar</a>
内部結構:
jdk1.6 1.7 1.8 均可
任何編輯器均可,本人使用的是intellij
javaassist的使用需要先将javaassist.jar導入到工程中,之後就可以直接在工程裡使用裡面的方法了。下面給出用javaassist修改外部jar包中testjar類的方法,并用反射測試了一下輸出結果,最後将修改好的類輸出到外部檔案夾
如果沒有問題的話,将會在外部檔案生成一個新的testjar.class 檔案,用jd-gui 檢視該class可以看到裡面的printtest方法已經被修改了
使用jdk自帶的打包工具jar可以将class檔案重新打包成jar檔案
其給出了一些使用例子如下:
示例 1: 将兩個類檔案歸檔到一個名為 classes.jar 的檔案中:
jar cvf classes.jar foo.class bar.class
示例 2: 使用現有的清單檔案 'mymanifest' 并
将 foo/ 目錄中的所有檔案歸檔到 'classes.jar' 中:
jar cvfm classes.jar mymanifest -c foo/ .
是以,我們在使用的時候需要使用terminal進入到class所在到檔案目錄,使用指令:
在目前目錄下打包生成newtestjar.jar檔案。
該檔案就是修改後的jar包,使用jd-gui打開檢視可以看到源碼已經被修改。