带有Spring的嵌入式Tomcat引发IllegalAccessError:<proxy>无法访问其超级接口<class>

时间:2018-09-25 14:39:46

标签: spring tomcat embedded-tomcat-8

我有一个可以像雄猫一样正常工作的应用程序。现在,我想使用以下代码从嵌入式Tomcat启动它:

    public static void main(String[] args) throws Exception {
    Tomcat tomcat = new Tomcat();
    tomcat.enableNaming();

    StandardContext ctx =
            (StandardContext) tomcat.addWebapp("/myapp", new File("src/main/webapp/").getAbsolutePath());

    StandardJarScanner jarScanner = (StandardJarScanner) ctx.getJarScanner();
    jarScanner.setScanClassPath(false);
    jarScanner.setScanAllDirectories(false);
    jarScanner.setScanBootstrapClassPath(false);

    tomcat.start();
    tomcat.getServer().await();
}

应用程序接缝将要开始,但是在加载少量Spring Services之后,它会收到此类异常

Caused by: java.lang.IllegalAccessError: class de.abc.service.intern.$Proxy213 cannot access its superinterface de.abc.service.intern.PageMetadataStorage
at java.lang.reflect.Proxy.defineClass0(Native Method)
at java.lang.reflect.Proxy.access$300(Proxy.java:228)
at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:642)
at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557)
at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230)
at java.lang.reflect.WeakCache.get(WeakCache.java:127)
at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719)
at org.springframework.aop.framework.JdkDynamicAopProxy.getProxy(JdkDynamicAopProxy.java:122)
at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:109)

看起来$ Proxy213由引导类加载器加载,无法从Web应用访问类。有问题的接口受程序包保护。

有人可以解释一下这里发生了什么吗?我能以某种方式解决它吗?

0 个答案:

没有答案