日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3种常见的Class级别的错误

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3种常见的Class级别的错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?3種常見的Class級別的錯誤

ClassNotFoundException

很明顯,這個錯誤是 找不到類異常,即在當前classpath路徑下找不到這個類。

ClassNotFoundException繼承了Exception,是必須捕獲的異常,所以這個異常一般發生在顯示加載類的時候,如下面兩種方式顯示來加載類并要捕獲異常。

public static void main(String[] args) {try {Class.forName("com.User");} catch (ClassNotFoundException e) {e.printStackTrace();} ? ?try {Test.class.getClassLoader().loadClass("com.User");} catch (ClassNotFoundException e) {e.printStackTrace();} }

當無法找到對應的類時都會拋出ClassNotFoundException異常。

java.lang.ClassNotFoundException: com.Userat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at com.test.user.Test.main(Test.java:15)

NoClassDefFoundError

這是虛擬機隱式加載類出現的異常。

這個異常繼承了Error類,一般發生在引用的類不存在,即類、方法或者屬性引用了某個類或者接口,如果目標引用不存在就會拋出這個異常。

import org.jdom2.input.DOMBuilder; public class MyDomBuilder extends DOMBuilder{ } public static void main(String[] args) {MyDomBuilder builder = new MyDomBuilder(); }

MyDomBuilder繼承了DOMBuilder,如果把DOMBuilder所屬的jar包范圍設置為provided,即運行時找不到DOMBuilder類就會報錯。

Exception in thread "main" java.lang.NoClassDefFoundError: org/jdom2/input/DOMBuilderat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)at java.net.URLClassLoader.access$100(URLClassLoader.java:73)at java.net.URLClassLoader$1.run(URLClassLoader.java:368)at java.net.URLClassLoader$1.run(URLClassLoader.java:362)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:361)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at com.test.user.Test.main(Test.java:8) Caused by: java.lang.ClassNotFoundException: org.jdom2.input.DOMBuilderat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 13 more

先報出ClassNotFoundException,然后引發NoClassDefFoundError。

所以,以上兩個錯誤都要確保加載類或者引用類都要在classpath路徑下。

ClassCastException

類轉換異常,這個錯誤一般發生在一個對象強制轉換類型的時候,如將一個String強制轉換成Integer就會報這個錯。

這個異常繼承了運行時異常RuntimeException,不需要捕獲的異常。為了避免報這個錯,在轉換之間可以先用instanceof判斷下是不是該類的引用再轉換。如果是集合類型,最好指定集合里面的泛型。

public static void main(String[] args) {Object str = "123";Integer i = (Integer)str; }

字符串"123"強制轉換成Integer,然后報錯。

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integerat com.test.user.Test.main(Test.java:9)

總結

以上是生活随笔為你收集整理的3种常见的Class级别的错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。