天天看点

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。