posts - 42,comments - 83,trackbacks - 0

                  這2個東西應該是java里很常見,很簡單,他們都和classpath設定有關,但區別在哪里呢? 我們都知道java里生成對象有如下兩種方式:
                  1:Object obj = new ClassName(); 直接new一個對象
                  2:Class clazz = Class.forName(ClassName);
                        Object obj = clazz.newInstance(); 通過class loader動態裝載一個類,然后獲取這個類的實例

                  同樣是生成對象,1在編譯期間檢查classpath, 如果沒有類定義,編譯沒法通過。而2在編譯期間是不會檢查的,不過需要拋出或者自己catch ClassNotFoundException。 運行期間,如果1編譯時依賴的類不在classpath中(導致classloader裝載失敗),此時拋出的異常就是NoClassDefFoundError。而如果2在運行期間需要裝載的類不在classpath中,拋出的則是ClassNotFoundException。

          posted on 2008-09-25 19:45 走走停停又三年 閱讀(9672) 評論(5)  編輯  收藏 所屬分類: Java Technology

          FeedBack:
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區別
          2008-09-26 09:53 |
          學習
          兩個異常都是在類沒找到的時候拋出,只是在Class.forName拋ClassNotFoundException,在new的時候拋NoClassDefFoundError
          是這意思嗎?  回復  更多評論
            
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區別
          2008-09-26 09:57 | fjin
          是啊,NoClassDefFoundError是編譯期間能找到,但runtime找不到。而ClassNotFoundException則是說runtime找不到,因為編譯期間是不做檢查的。  回復  更多評論
            
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區別
          2008-09-26 10:05 | 舞命小丟
          學習了!不錯!  回復  更多評論
            
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區別
          2008-09-26 11:01 |
          哦,NoClassDefFoundError
          不是Exception是Error
            回復  更多評論
            
          # 怎樣解決以下錯誤,請高手幫忙[未登錄]
          2009-06-18 17:40 | 你好
          嚴重: Exception starting filter AuthFilter
          java.lang.ClassNotFoundException: com.alt.common.filter.AuthFilter
          at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
          at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
          at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249)
          at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
          at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
          at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
          at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363)
          at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
          at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
          at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
          at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
          at org.apache.catalina.core.StandardService.start(StandardService.java:516)
          at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
          at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:585)
          at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
          at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
          2009-6-18 17:34:09 org.apache.catalina.core.StandardContext start
          嚴重: Error filterStart
          2009-6-18 17:34:09 org.apache.catalina.core.StandardContext start
          嚴重: Context [/marry] startup failed due to previous errors  回復  更多評論
            
          主站蜘蛛池模板: 郁南县| 饶河县| 新和县| 塔河县| 罗山县| 永清县| 汉阴县| 鹤庆县| 韩城市| 陆川县| 定安县| 南昌县| 汤原县| 巴林左旗| 阿坝县| 东阳市| 新竹市| 梧州市| 海城市| 湟源县| 延寿县| 普定县| 木里| 嘉禾县| 江山市| 隆昌县| 连江县| 惠州市| 赫章县| 泽普县| 大名县| 宝清县| 盘锦市| 宁波市| 从化市| 赤壁市| 凤台县| 扎兰屯市| 浠水县| 漳平市| 宣化县|