顧名思義,當 Java 虛擬機器 (JVM) 嘗試載入特定類別時,Java 中會發生 ClassNotFoundException。在你指定的類別的路徑中找不到請求的類,這意味著你指定的類別的路徑被破壞了,這個問題在Java世界裡確實很常見。因此,ClassNotFoundException在Java中也很常見。這個問題對 Java 初學者來說非常困惑,ClassNotFoundException 必須被 catch 或拋出給呼叫者 ClassNotFoundException 是一個受檢查的例外。
廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
Java中ClassNotFoundException的語法如下:
java.lang.ClassNotFoundException:Class_name at location
Java 中 ClassNotFoundException 的工作原理
- 當應用程式嘗試載入類別時,類別載入器無法在指定類別的路徑中找到該類,即 Java 中出現 ClassNotFoundException。
- 使用Class.forName和ClassLoader.loadClass載入類,同時傳遞類別的字串名稱作為參數,但在指定類別的路徑中找不到,這是java.lang的常見原因之一Java 中的.ClassNotFoundException 。
- Java 中的 ClassNotFoundException 必須被捕獲或拋出給呼叫者,因為它是一個受檢查的例外。
- 該類別是使用類別載入器間接載入的。結果,Java中的ClassNotFoundException在執行時出現。 Java 編譯器無法在執行時知道某個類別是否存在於指定類別的路徑中。
- 嘗試使用 Class.forName 載入 JDBC 驅動程式並且不在類別的路徑中新增 jar 檔案是 Java 中 ClassNotFoundException 的常見範例之一。
- 考慮下面的程式來示範 Java 中的 ClassNotFoundException:
//a class called program is defined public class Program { //main method is called public static void main(String args[]) { //class not found exception is defined using try and catch block try { // the forname method in class class looks for the mentioned class Class.forName("The Class do not Exist"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
上述程式的輸出如下圖:
在上面的程式中,定義了一個名為Program的類別。然後呼叫main方法。然後使用 try 和 catch 區塊定義類別未找到異常。類別載入器試圖尋找的類別不存在,並且類別中的 forname 方法會尋找所提到的類別,但未能找到;因此拋出 ClassNotFoundException。程式的輸出如上面的快照所示。
建構子
Java中有幾個ClassNotFoundException的建構子。他們是:
- ClassNotFoundException(): 建構一個新的 ClassNotFoundException,其中包含堆疊的目前追蹤。
- ClassNotFoundException(String): 建構一個新的 ClassNotFoundException,其中包含指定的堆疊的目前追蹤和詳細訊息。
- ClassNotFoundException(IntPtr, JniHandleOwnership): 在建立 JNI 物件期間,在管理其表示時,會使用此建構函數,並且執行時會呼叫它。
- ClassNotFoundException(String, Throwable): 建構一個新的 ClassNotFoundException,其中包括堆疊的當前追蹤以及指定的詳細訊息以及嘗試載入類別時發生的異常.
Java ClassNotFoundException 範例
以下是下面提到的範例:
範例#1
示範 ClassNotFoundException 的 Java 程式:
代碼:
//a class called exceptiondemo is defined public class Exceptiondemo { //a string variable is defined private static final String DRIVE_CLASS = "com.mysql.jdbc.Driver"; //main method is called including the exception public static void main(String[] args) throws Exception { System.out.println("MySQL JDBC driver loading attempt"); //the forname method in class class looks for the mentioned class Class.forName(DRIVE_CLASS); } }
上述程式的輸出如下圖:
在上面的程式中,定義了一個名為Exception demo的類別。然後呼叫main方法。然後定義一個字串變量,向其指派 JDBC 驅動程式路徑。然後呼叫 main 方法,該方法拋出異常。類別載入器嘗試尋找指定類別的 JDBC 驅動程式路徑,並且類別中的 forname 方法查找所提到的類,但未能找到;因此拋出 ClassNotFoundException。程式的輸出如上面的快照所示。
範例#2
示範 ClassNotFoundException(String) 的 Java 程式
代碼:
//a class called check is defined public class Check { //main method is called public static void main(String args[]) { //class not found exception is defined using try catch block try { //the forname method in class class looks for the mentioned class Class.forName("Demonstrating class not found exception"); } catch(ClassNotFoundException e) { //the string specified along with the class not found exception is displayed. System.out.println("There is no class as specified in the path " + e); } } }
上述程式的輸出如下圖:
在上面的程式中,定義了一個名為check的類別。然後呼叫main方法。然後呼叫main方法。然後使用 try 和 catch 區塊定義類別未找到異常。 然後 class 中的 forename 方法會尋找所提到的類,但找不到;因此,拋出 ClassNotFoundException 並顯示指定為詳細訊息的字串以及未找到類別異常。程式的輸出如上面的快照所示。
如何避免 ClassNotFoundException?
避免 ClassNotFoundException 的步驟:
- 必須找出導致該 jar 檔案有問題的類別的檔案。
- 我們應該檢查類別的路徑或類別路徑是否包含該 jar。如果該 jar 不存在於類別路徑或類別路徑中,則必須將該類別新增至類別或類別路徑路徑。
- 如果類別存在於類別或類別路徑路徑中,則很可能存在類別路徑或類別路徑的覆蓋,或者 jar 檔案中指定的路徑或用於啟動的腳本正在被使用該應用程式。為了解決這個問題,我們需要找到應用程式正在使用的類別的確切路徑。
結論
在本教程中,我們透過定義了解Java 中的Class Not Found Exception 的概念、Java 中的Class Not Found Exception 的語法、Java 中的Class Not Found Exception 的工作原理以及透過範例及其輸出來了解它們的構造函數。
以上是Java 類別未找到異常的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版