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  回復  更多評論
            
          主站蜘蛛池模板: 蓬安县| 龙川县| 游戏| 克什克腾旗| 丹巴县| 潼南县| 保亭| 淅川县| 尼木县| 新绛县| 庐江县| 唐河县| 金山区| 孟村| 准格尔旗| 阳泉市| 谢通门县| 八宿县| 镇雄县| 西盟| 临武县| 临沭县| 安丘市| 柞水县| 垣曲县| 平远县| 建始县| 故城县| 同德县| 安化县| 宁南县| 临沂市| 睢宁县| 谷城县| 石泉县| 镇坪县| 和平区| 中山市| 甘泉县| 忻州市| 出国|