首页 > org.springframework.web.context.ContextLoaderListener加载失败?

org.springframework.web.context.ContextLoaderListener加载失败?

public class MyClassLoader extends WebappClassLoader{
    public MyClassLoader(){
        System.out.println("无参构造");
    }
    
    public MyClassLoader(ClassLoader parent){
        super(parent);
        System.out.println();
        System.out.println("当前现成的加载器"+Thread.currentThread().getContextClassLoader());
        System.out.println(getParent());
        
    }

    @Override
    public Class<?> findClass(String name) throws ClassNotFoundException {
        Class<?> clazz=null;
        if(name.contains("com.yyd")){
            //说明是我自己写的类
            try {
                clazz=loadbyme(name);
            } catch (NotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (CannotCompileException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(clazz!=null){
            System.out.println("自己的加载器加载成功");
        }
        
        return clazz;
    }
    
    

    @Override
    public Class<?> loadClass(String name) throws ClassNotFoundException {
        if(name.contains("com.yyd")){
            return findClass(name);
        }else{
            return super.loadClass(name);
        }
    }

    private Class<?> loadbyme(String name) throws NotFoundException, CannotCompileException, IOException{
        
        
        ClassPool pool=ClassPool.getDefault();
        CtClass clazz=pool.get(name);
        CtMethod[] methods=clazz.getMethods();
        String oldname="";
        String newname="";
        for(CtMethod temp:methods){
            oldname=temp.getName();
            System.out.println("oldname-------->"+oldname);
            newname=oldname+"_123";
            System.out.println("newname-------->"+newname);
            temp.setName(newname);
        }
    //写出去
    //    clazz.writeFile("e:/encryptClass/"+oldname+".class");
        return clazz.toClass();
    }

}

四月 27, 2016 1:36:04 下午 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.34 using APR version 1.5.1.
四月 27, 2016 1:36:04 下午 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
四月 27, 2016 1:36:05 下午 org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized with version OpenSSL 1.0.1q 3 Dec 2015
四月 27, 2016 1:36:05 下午 org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
四月 27, 2016 1:36:05 下午 org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8009
四月 27, 2016 1:36:05 下午 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1719 ms
四月 27, 2016 1:36:05 下午 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
四月 27, 2016 1:36:05 下午 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.45
四月 27, 2016 1:36:05 下午 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor aaaa.xml

当前现成的加载器org.apache.catalina.loader.StandardClassLoader@452fe9bf
org.apache.catalina.loader.StandardClassLoader@452fe9bf
四月 27, 2016 1:37:38 下午 org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at com.yyd.MyClassLoader.loadClass(MyClassLoader.java:64)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4179)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4739)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:803)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:780)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:676)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:602)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:503)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:325)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1069)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:759)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

四月 27, 2016 1:37:38 下午 org.apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
四月 27, 2016 1:37:38 下午 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart

我自己写了一个类加载器,继承了webappclassloader。当类的名字不包含特定字符时,我就用super.loadclass(name)交给webappclassloader处理了,但是报错了

【热门文章】
【热门文章】