首頁  >  文章  >  Java  >  Java 類別未找到異常

Java 類別未找到異常

WBOY
WBOY原創
2024-08-30 16:14:44837瀏覽

顧名思義,當 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();
}
}
}

上述程式的輸出如下圖:

Java 類別未找到異常

在上面的程式中,定義了一個名為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);
}
}

上述程式的輸出如下圖:

Java 類別未找到異常

在上面的程式中,定義了一個名為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);
}
}
}

上述程式的輸出如下圖:

Java 類別未找到異常

在上面的程式中,定義了一個名為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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn