Java類載入時常見錯誤分析
阿新 • • 發佈:2019-02-04
在執行Java程式的時候常常都會遇到ClassNotFoundException和NoClassDefFoundError這兩個錯誤,它們都和類載入異常有關。
ClassNotFoundException
這個異常常常發生在顯式載入一個類的時候,通常有以下三種方式會顯式載入類。
- Class.forName("className")方法
- ClassLoader.loadClass("")方法
- ClassLoader.findSystemClass()方法
出現這類錯誤的原因就是當JVM要去指定的路徑下載入這個類的位元組碼檔案時,找不到這個檔案對應的位元組碼,解決辦法是去檢查當前的classpath下是否存在該檔案。如果不知道當前的classpath可以使用System.out.println(this.getClass().getClassLoader().getResource(""))來檢視。
NoClassDefFoundError
這個錯誤在Java原始碼註釋中有提到出現該錯誤可能的情況是使用new表示式、屬性引用某個類、繼承了某個介面或類、以及方法中的某個引數引用了某個類這時會觸發JVM隱式載入這些類時發現這些類不存在的異常,解決辦法是確保引用的每個類都在當前的classpath下面。