<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 1  文章 - 37  trackbacks - 0
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    test

    搜索

    •  

    最新評論


    現象:

    啟動Tomcat
    刪除 CATALINA_HOME/work/ 目錄下的Catalina目錄
    訪問任何一個jsp文件,將發生錯誤

    org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
        org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:
    156)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
    329)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
    342)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
    267)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:
    717)

     

    原因:

    Tomcat對jsp的處理是由一個JspServlet來完成的,當tomcat啟動時,會為每一個context創建jsp工作目錄(work dir),存放地為 CATALINA_HOME/work/Catalina/HOST_NAME/CONTEXT_NAME,context編譯jsp所需要的參數也隨之初始化,加載jsp class的base path也已經潛在初始化,是一個File對象,它將在隨后URLClassLoader加載jsp class時作為一個resource url,下面是部分代碼:

    org.apache.jasper.JspCompilationContext.java

    初始化 JspLoader

    public ClassLoader getJspLoader() {
            
    if( jspLoader == null ) {
                jspLoader 
    = new JasperLoader
                (
    new URL[] {baseUrl},
                        getClassLoader(),
                        rctxt.getPermissionCollection(),
                        rctxt.getCodeSource());
            }

            
    return jspLoader;
        }


    其中baseUrl是這樣得到的

    protected void createOutputDir() {
            String path 
    = null;
            
    if (isTagFile()) {
                String tagName 
    = tagInfo.getTagClassName();
                path 
    = tagName.replace('.', File.separatorChar);
                path 
    = path.substring(0, path.lastIndexOf(File.separatorChar));
            }
     else {
                path 
    = getServletPackageName().replace('.',File.separatorChar);
            }


                
    // Append servlet or tag handler path to scratch dir
                try {
                    File base 
    = options.getScratchDir();
                    baseUrl 
    = base.toURI().toURL();
                    outputDir 
    = base.getAbsolutePath() + File.separator + path + 
                        File.separator;
                    
    if (!makeOutputDir()) {
                        
    throw new IllegalStateException(Localizer.getMessage("jsp.error.outputfolder"));
                    }

                }
     catch (MalformedURLException e) {
                    
    throw new IllegalStateException(Localizer.getMessage("jsp.error.outputfolder"), e);
                }

        }

    options.getScratchDir() 是在tomcat啟動時初始化的,于是,啟動tomcat后,刪除work目錄,訪問jsp時,盡管work目錄被重新創建并且jsp被成功編譯,但是由于ClassLoader中原目錄對象與當前目錄對象不同,而無法加載到jsp的class

    posted on 2009-07-05 17:22 Phrancol Yang 閱讀(357) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日韩精品成人无码专区免费| 99视频有精品视频免费观看| 国产免费av片在线无码免费看| 久久综合久久综合亚洲| 热re99久久6国产精品免费| 亚洲高清在线播放| 久久国产乱子伦精品免费不卡| 亚洲AV无码久久精品色欲| 久久福利青草精品资源站免费| 亚洲av中文无码乱人伦在线r▽| 大地资源中文在线观看免费版| 亚洲国产婷婷六月丁香| 女人体1963午夜免费视频| 久久99亚洲网美利坚合众国 | 日韩精品亚洲aⅴ在线影院| 春意影院午夜爽爽爽免费| 综合亚洲伊人午夜网 | 免费无码肉片在线观看| 亚洲人成小说网站色| 国产小视频免费观看| jizz免费在线观看| 亚洲成AV人在线播放无码| 亚洲w码欧洲s码免费| 亚洲国产精品无码中文lv| 亚洲AⅤ永久无码精品AA| 免费人成黄页在线观看日本| 亚洲国产av美女网站| 国产做床爱无遮挡免费视频| 国产无遮挡裸体免费视频在线观看 | 成年女性特黄午夜视频免费看| 国产亚洲综合一区二区三区| 久久久久亚洲精品男人的天堂| 一级毛片免费不卡在线| 亚洲午夜无码毛片av久久京东热| 亚洲福利在线播放| jjizz全部免费看片| 白白色免费在线视频| 久久亚洲精品人成综合网| 黄网址在线永久免费观看 | 男人的天堂亚洲一区二区三区 | 免费人成在线观看视频高潮|