[java基础问题] Exception 和 Error
NoClassDefFoundError 和 ClassNotFoundException 的區別;
NoClassDefFoundError是一個錯誤(Error),而ClassNOtFoundException是一個異常,在Java中對于錯誤和異常的處理是不同的,我們可以從異常中恢復程序但卻不應該嘗試從錯誤中恢復程序。
ClassNotFoundException的產生原因主要是:
Java支持使用反射方式在運行時動態加載類,例如使用Class.forName方法來動態地加載類時,可以將類名作為參數傳遞給上述方法從而將指定類加載到JVM內存中,如果這個類在類路徑中沒有被找到,那么此時就會在運行時拋出ClassNotFoundException異常。
解決該問題需要確保所需的類連同它依賴的包存在于類路徑中,常見問題在于類名書寫錯誤。
另外還有一個導致ClassNotFoundException的原因就是:當一個類已經某個類加載器加載到內存中了,此時另一個類加載器又嘗試著動態地從同一個包中加載這個類。通過控制動態類加載過程,可以避免上述情況發生。
NoClassDefFoundError產生的原因在于:
如果JVM或者ClassLoader實例嘗試加載(可以通過正常的方法調用,也可能是使用new來創建新的對象)類的時候卻找不到類的定義。要查找的類在編譯的時候是存在的,運行的時候卻找不到了。這個時候就會導致NoClassDefFoundError.
造成該問題的原因可能是打包過程漏掉了部分類,或者jar包出現損壞或者篡改。解決這個問題的辦法是查找那些在開發期間存在于類路徑下但在運行期間卻不在類路徑下的類。
轉載于:https://www.cnblogs.com/xiong233/p/10942914.html
總結
以上是生活随笔為你收集整理的[java基础问题] Exception 和 Error的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pycharm如何导入python文件,
- 下一篇: [Swift]LeetCode1153.