代码之家  ›  专栏  ›  技术社区  ›  Maciej Miklas

带有Spring throws的嵌入式Tomcat抛出IllegalAccessError:<proxy>无法访问其上级接口<class>

  •  1
  • Maciej Miklas  · 技术社区  · 6 年前

    我有一个应用程序在tomcat中工作得很好。现在我想从嵌入式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();
    }
    

    应用程序seams将要启动,但是在加载了一些Spring服务之后,它会出现这样的异常

    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 回复  |  直到 6 年前
    推荐文章