java - org.springframework.web.context.ContextLoaderListener加载失败?
天蓬老师
天蓬老师 2017-04-17 17:47:49
[Java讨论组]
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处理了,但是报错了

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号