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

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

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

    上善若水
    In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra
    posts - 146,comments - 147,trackbacks - 0

    問題重現(xiàn):

    今天一剛開始學(xué)Java的同學(xué)在接觸Jsp的時候遇到了一個比較詭異的問題,他在JSP中始終無法使用自己寫的類。簡單的演示問題代碼:

     

    //沒有定義包名

    public class MyDefaultClass {

    }

     

    //index.jsp文件

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"

        pageEncoding="ISO-8859-1"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <title>Insert title here</title>

    </head>

    <body>

    <%

        MyDefaultClass cls = new MyDefaultClass();

    %>

    Load successful

    </body>

    </html>

     

    出現(xiàn)的錯誤提示:

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: Unable to compile class for JSP:

     

    An error occurred at line: 12 in the jsp file: /index.jsp

    MyDefaultClass cannot be resolved to a type

    9: <body>

    10:

    11: <%

    12:     MyDefaultClass cls = new MyDefaultClass();

    13: %>

    14:

    15: Load successful

     

     

    An error occurred at line: 12 in the jsp file: /index.jsp

    MyDefaultClass cannot be resolved to a type

    9: <body>

    10:

    11: <%

    12:     MyDefaultClass cls = new MyDefaultClass();

    13: %>

    14:

    15: Load successful

     

     

    Stacktrace:

            org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)

            org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)

            org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)

            org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)

            org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)

            org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)

            org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)

            org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)

            org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

            org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

            javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

     

    解決方案:

    為什么要特別提示他是剛開始接觸Java呢?因為我是想強(qiáng)調(diào)一下他沒有定義包名的習(xí)慣,所以才會出現(xiàn)這個問題,而在Java中不定義包名是一個非常不好的編程習(xí)慣。這個問題本身是可以通過定義自己的包名,然后在JSP文件中導(dǎo)入自己的包解決。

     

    問題原因:

    由于JSP文件在請求時動態(tài)的生成Servlet類,然后動態(tài)的編譯新生成的Servlet類,并加載新編譯出的Servletclass文件,運行相應(yīng)的service方法,返回結(jié)果給客戶端。根據(jù)棧信息可以知道問題出在了動態(tài)編譯Servlet類的時候,而且是說MyDefaultClass無法被解析。

    所以我猜測,可能是Tomcat在解析JSP文件的時候,沒有發(fā)現(xiàn)有用戶導(dǎo)入的類型(沒有使用命名空間,因而無法導(dǎo)入包,也不需要加包名的前綴,導(dǎo)致Tomcat在解析JSP文件的時候無法自動感知到當(dāng)前是引用了用戶自定義的類的;也導(dǎo)致在編譯的時候卻能通過),所以在動態(tài)編譯的時候沒有設(shè)置ClassPath的值,然后導(dǎo)致了這個問題。然而對于這個“Bug”,Tomcat本身應(yīng)該不會想不到,何況從邏輯上,默認(rèn)的把/classes/lib的目錄加入到ClassPath中去編譯動態(tài)生成的Servlet類也是合理的,那么Tomcat為什么要這樣做呢?我的猜測可能會有兩點吧:1. Tomcat也認(rèn)為不定義包名是非常不好的習(xí)慣,因而故意留下這個缺陷,以驚醒編程人員。2. 也有可能是出于性能的考慮,如果不加ClassPath應(yīng)該是可以提升編譯動態(tài)生成的Servlet類的速度的,因而只要不需要ClassPath的情況下,默認(rèn)就不加。

    2010-09-22

    posted on 2011-07-20 23:08 DLevin 閱讀(888) 評論(0)  編輯  收藏 所屬分類: Core Java
    主站蜘蛛池模板: 野花高清在线观看免费3中文 | 国产真人无码作爱视频免费| 亚洲国产精品一区二区久久hs| 中文字幕天天躁日日躁狠狠躁免费| 亚洲av成人一区二区三区| 亚洲av高清在线观看一区二区 | 亚洲一级免费毛片| 亚洲国产精品美女久久久久| 日日噜噜噜噜夜夜爽亚洲精品| 131美女爱做免费毛片| 精品国产亚洲第一区二区三区 | 在线观看亚洲AV每日更新无码| 亚洲精品国自产拍在线观看| 午夜免费福利小电影| 亚洲av无码成人影院一区| 中文字幕精品亚洲无线码二区| 1000部国产成人免费视频| 日本视频免费观看| 亚洲成人黄色在线观看| 午夜亚洲国产成人不卡在线| 182tv免费视视频线路一二三| 人妻仑刮八A级毛片免费看| 亚洲一级在线观看| 亚洲午夜久久久久久久久久| 成人在线免费观看| 无码AV片在线观看免费| 黄色三级三级三级免费看| 亚洲精品国产成人中文| 国产成人A亚洲精V品无码| 午夜寂寞在线一级观看免费| 久久午夜无码免费| www免费黄色网| 久久精品亚洲日本波多野结衣| 久久亚洲精品无码VA大香大香| 亚洲人成人网站在线观看| 女性无套免费网站在线看| 97免费人妻在线视频| 最新国产乱人伦偷精品免费网站| 国产精品亚洲天堂| 亚洲精品无码高潮喷水A片软| 亚洲黄色在线观看|