3

有沒有辦法修改.class文件,以便將Java註釋添加到某些方法?基本上我想在jar文件中遍歷每個類文件的方法並註釋某些文件。請注意,這不是在使用jar文件時的運行時。相反,在我完成後,我想用註釋修改類文件。Retro -active將Java註釋添加到方法?

我有機會獲得源代碼,所以如果有一個自動的源代碼修改,將工作以及...

我假設我需要如JavassistASM的工具。如果是這樣,我應該使用哪一個,我將如何去做?

+0

這當然可以通過添加適當的屬性.class文件的方法領域做到這一點。儘管如此,我沒有太多的使用工具來做這件事的經驗。 – templatetypedef 2011-01-28 10:06:22

回答

4

使用谷歌搜索了一個小時左右轉到this article這似乎完全回答我的問題:使用ASM。要使用更改的字節碼編寫類文件,請使用ClassWriter

那麼,我想,那麼上班的時間了。 :)

6

其實,這是一個典型的用例的AspectJ:

declare @method : public * BankAccount+.*(..) : @Secured(role="supervisor") 

雖然我將給予你直接字節碼操作更強大,AspectJ是更加人性化,並立即給你在做錯事情時會編譯警告。另外,如果使用Load Time Weaving,則可以保留原始庫jar不變,因爲編織發生在類加載時。

參考: