posts - 42,comments - 83,trackbacks - 0

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

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

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

          FeedBack:
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區(qū)別
          2008-09-26 09:53 |
          學習
          兩個異常都是在類沒找到的時候拋出,只是在Class.forName拋ClassNotFoundException,在new的時候拋NoClassDefFoundError
          是這意思嗎?  回復  更多評論
            
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區(qū)別
          2008-09-26 09:57 | fjin
          是啊,NoClassDefFoundError是編譯期間能找到,但runtime找不到。而ClassNotFoundException則是說runtime找不到,因為編譯期間是不做檢查的。  回復  更多評論
            
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區(qū)別
          2008-09-26 10:05 | 舞命小丟
          學習了!不錯!  回復  更多評論
            
          # re: java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的區(qū)別
          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  回復  更多評論
            
          主站蜘蛛池模板: 博乐市| 岐山县| 绵竹市| 拜泉县| 长春市| 湾仔区| 西青区| 梁山县| 罗平县| 定襄县| 临江市| 邻水| 桓仁| 黄骅市| 乐亭县| 乌什县| 府谷县| 芒康县| 绵阳市| 中牟县| 台安县| 两当县| 万源市| 苏州市| 凤山市| 祁连县| 登封市| 克拉玛依市| 高陵县| 长汀县| 西藏| 宝山区| 彭水| 阳新县| 保山市| 邢台县| 论坛| 蛟河市| 黄山市| 绵竹市| 炎陵县|