2015-06-03 36 views
0

時,我寫了一個簡單的Java代理儀器中使用了Javassist庫基於Java的Web應用程序的一些活動拋出ClassNotFoundException異常。Java代理使用了Javassist

問題是,當我將我的代理程序附加到jp2launcher進程我得到ClassNotFoundException拋出,因爲它找不到javassist.CtBehavior類。

所以,我想運行一個簡單的本地Java應用程序只是爲了測試我的經紀人,看看它的工作原理,它做到了。

我試圖運行另外一個測試,我只打印「你好」 Java控制檯和重視我的經紀人到Web應用程序,它的工作只告訴我,我的經紀人工作。

做任何你有任何想法,爲什麼連接到Web應用程序時,它找不到了Javassist?我已經設置了類路徑來將javassist.jar指向我的磁盤。

感謝

回答

0

您最有可能使用默認ClassPool。 Javassist通過從類加載器中解析每個這樣的類的類文件來表示卸載的類。然而默認類池不參考系統類裝載機。然而,Web應用程序由不同的應用程序類加載器執行。因此,您需要將此類加載器附加到您的ClassPool,以便能夠以您在單元測試中觀察到的方式使用它。