今天在寫RCP的基礎運行插件的時候,發現一個非常有意思的問題:
我有兩個插件A和B,A是RCP運行主插件,B是普通插件,A依賴于B存在并運行。當我把B打成JAR包,放到A下,做本地依賴的時候,那么Log4j的配置文件加載無誤,但是這樣是違反了Eclipse插件開發原則(Eclipse最小運行單位是插件)的;我把A和B通過feature進行關聯,然后在A中依賴B插件,通過product文件啟動A插件的時候,發現B插件無法加載Log4j的配置文件... ...
很郁悶的問題哦~為什么?
因為我一直在使用原來java的類加載機制思考問題,一個類加載機,將加載所有的Class~在Eclipse下則不是這樣的,每一個類加載機只負責一個插件的內容加載~多個類加載機之間是沒有關系的~
因此,每一個插件在類加載時都是獨立的個體~所以每一個插件下面都需要自行增加一個Log4j配置文件,大家都獨立維護自己的Log4j配置文件~唉,有一個配置文件泛濫的年代啊~
ps:
客戶虐我千百遍,我待客戶如初戀!