<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

    搜索

    •  

    最新評論


    現(xiàn)象:

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

    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創(chuàng)建jsp工作目錄(work dir),存放地為 CATALINA_HOME/work/Catalina/HOST_NAME/CONTEXT_NAME,context編譯jsp所需要的參數(shù)也隨之初始化,加載jsp class的base path也已經(jīng)潛在初始化,是一個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目錄被重新創(chuàng)建并且jsp被成功編譯,但是由于ClassLoader中原目錄對象與當前目錄對象不同,而無法加載到j(luò)sp的class

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲AV无码国产精品永久一区| 亚洲综合色婷婷七月丁香| 99热在线精品免费播放6| 99久久综合精品免费| 亚洲AV无码一区二区乱子伦| 亚洲资源在线观看| 亚洲精品国产av成拍色拍| 直接进入免费看黄的网站| XXX2高清在线观看免费视频| 18禁男女爽爽爽午夜网站免费| 女人18毛片免费观看| 亚洲国产精品一区二区九九| 久久亚洲春色中文字幕久久久| 日本免费一区二区久久人人澡| 成人特黄a级毛片免费视频| 亚洲成a人片在线播放| 一级毛片免费观看不收费| 亚洲一级免费视频| 久久亚洲国产成人影院网站| 亚洲国产av美女网站| 一级毛片视频免费| 黑人精品videos亚洲人| 亚洲Av永久无码精品黑人| 全亚洲最新黄色特级网站 | 免费不卡在线观看AV| 久久亚洲国产精品成人AV秋霞| 亚洲6080yy久久无码产自国产| 国产免费人成视频在线观看| 亚洲综合无码一区二区| 67194熟妇在线永久免费观看| 亚洲AV无码成人专区片在线观看| 84pao强力永久免费高清| 亚洲国产精品无码久久一线| 国产偷国产偷亚洲高清人| 日日噜噜噜噜夜夜爽亚洲精品| 久久99热精品免费观看牛牛| 国产成人精品日本亚洲专区61| 日韩免费视频一区二区| 在线综合亚洲中文精品| 18pao国产成视频永久免费| 亚洲国产av玩弄放荡人妇|