天天看點

IllegalAccessError

    今天在工作中遇到了這樣一個Error,IllegalAccessError。java.lang.IllegalAccessError: class sun.reflect.GeneratedConstructorAccessor3 cannot access its superclass sun.reflect.ConstructorAccessorImpl。本系統使用了OSGI,初步分析,應該是系統内不止一個classloader加載了ConstructorAccessorImpl,使用visualvm檢視,果然有兩個ConstructorAccessorImpl,仔細排查系統内的依賴關系,去掉導緻沖突的依賴,問題得以解決。問題似乎是這樣産生的:classloaderA加載了A.class,classloaderB也加載了A.class,classloaderC要加載C.class,可是C類卻繼承了A類,現在系統内有兩個A.class,于是暈了,抛出IllegalAccessError。