“NoClassDefFoundError”+“war”+“tomcat”+“bytebuddy”

這周用buddy 對 spring controller註解做一個日誌監控

buddy 只是做的aop功能,具體調用還是spring 容器的log 對象

這個功能在jar 上運行良好,但是war 出現 NoClassDefFoundError 日誌對象

經過嘗試,和收集資料,知道是類加載導致的

byte-buddy 的ClassLoader 是appClassLoader

jar 的類加載機制,還沒去百度,可能依靠於mavan 庫,所以調用,可以找到【後面更新完善】

war 類加載機制,參考tomcat 類加載機制,其中webclassLoader 是一個項目私有的,所有訪問webapp log,出現NoClassDefFoundError,其次,不同的classLoader 加載的對象也不同,所以我這邊必須獲取同一個webclassLoader 下的log

通過實驗,發現bytebuddy 的Thread。classLoader,就是執行的wepclassLoader,但是由於,獲取通過一個webappClassLoader

所有我在日誌類那邊加了一個方法,通過反射解決

c++ Jvm 實現原理【https://juejin.im/post/5b0b732bf265da0dcc69d084

classLoader【https://www.cnblogs.com/KingIceMou/p/6769456.html

class 文件和Thread 執行區別【https://www.cnblogs.com/549294286/p/3714692.html】【主要參考】】

classLoader 特性[https://blog.csdn.net/xyang81/article/details/7292380]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章