當我嘗試查找使用Javaagent的示例時,在大多數情況下,它們都是使用字節碼的示例。這些示例使用第三方庫,如Javaassist。Javaagent。做什麼的?
據我所知,在Java中沒有使用字節碼的標準方法,無論如何你必須求助於這些庫。
所以,我試圖在調用defineClass()
之前在我自己的自定義類加載器中使用這些庫。當然,它工作得很好。我可以用同樣的方法改變字節碼,就好像我用ClassFileTransformer
的transform()
方法來做。
我是否正確理解javaagents有另一個有用的功能,反過來又是它們的主要功能?因爲首先,javaagent爲您提供了一個Instrumentation
對象,Java規範說明instrument
包主要用於處理字節碼。但是爲什麼我需要這樣做,如果我只是可以實現我自己的類加載器(在引入instrument
包之前我可以做的事情)?
你能舉個例子嗎? –
http://www.javabeat.net/2012/06/introduction-to-java-agents/# – isnot2bad
我很抱歉,但他們在文章中所做的一切都是使用ASM進行字節碼轉換。類加載器也可以做到這一點。 –