Rumah  >  Artikel  >  Java  >  Java ClassNotFoundException

Java ClassNotFoundException

WBOY
WBOYasal
2024-08-30 16:14:44837semak imbas

Seperti namanya, ClassNotFoundException berlaku dalam Java apabila kelas tertentu cuba dimuatkan oleh Java Virtual Machine(JVM). Kelas yang diminta tidak ditemui dalam laluan kelas yang anda tentukan, bermakna laluan kelas yang anda tentukan telah rosak, masalah yang benar-benar biasa di dunia Jawa. Oleh itu, ClassNotFoundException juga biasa di Jawa. Masalah ini sangat mengelirukan bagi mereka yang masih baru dalam Java, dan ClassNotFoundException mesti ditangkap atau dibuang ke pemanggil ClassNotFoundException ialah pengecualian yang diperiksa.

IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

SintaksClassNotFoundException dalam Java adalah seperti berikut: 

java.lang.ClassNotFoundException:Class_name at location

Menggunakan ClassNotFoundException dalam Java

  • Apabila pemuat kelas tidak dapat mencari kelas dalam laluan kelas yang ditentukan semasa aplikasi cuba memuatkan kelas, iaitu apabila ClassNotFoundException berlaku di Java.
  • Memanfaatkan Class.forName dan ClassLoader.loadClass untuk memuatkan kelas sambil menghantar nama rentetan kelas sebagai parameter yang tidak ditemui dalam laluan kelas yang ditentukan adalah salah satu punca biasa untuk java.lang .ClassNotFoundException dalam Java.
  • ClassNotFoundException dalam Java mesti ditangkap atau dilemparkan kepada pemanggil kerana ia adalah pengecualian yang diperiksa.
  • Kelas dimuatkan secara tidak langsung menggunakan Pemuat Kelas. Akibatnya, ClassNotFoundException dalam Java berlaku pada masa jalan. Tiada cara pengkompil Java boleh mengetahui sama ada kelas hadir dalam laluan kelas yang ditentukan atau tidak pada masa jalan.
  • Cuba memuatkan pemacu JDBC menggunakan Class.forName dan tidak menambah fail jar dalam laluan kelas ialah salah satu contoh biasa ClassNotFoundExceptionin Java.
  • Pertimbangkan program di bawah untuk menunjukkan ClassNotFoundException dalam Java:
//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();
}
}
}

Output program di atas adalah seperti yang ditunjukkan dalam syot kilat di bawah:

Java ClassNotFoundException

Dalam program di atas, kelas yang dipanggil Program ditakrifkan. Kemudian kaedah utama dipanggil. Kemudian kelas tidak dijumpai pengecualian ditakrifkan menggunakan blok cuba dan tangkap. Tiada kelas tidak wujud.java kelas yang pemuat kelas cuba cari dan kaedah nama dalam kelas mencari kelas yang disebutkan, yang gagal ditemui; maka ClassNotFoundException dibuang. Output program adalah seperti yang ditunjukkan dalam syot kilat di atas.

Pembina

Terdapat beberapa pembina untuk ClassNotFoundException dalam Java. Mereka ialah:

  • ClassNotFoundException(): ClassNotFoundException baharu dibina yang merangkumi surih semasa tindanan.
  • ClassNotFoundException(String): ClassNotFoundException baharu dibina, yang merangkumi surih semasa tindanan dan mesej secara terperinci, ditentukan.
  • ClassNotFoundException(IntPtr, JniHandleOwnership): Semasa penciptaan objek JNI, sambil menguruskan perwakilannya, pembina ini digunakan dan masa jalan memanggilnya.
  • ClassNotFoundException(String, Throwable): ClassNotFoundException baharu dibina, yang merangkumi surih semasa tindanan bersama dengan mesej secara terperinci yang ditentukan dan pengecualian yang berlaku apabila cuba memuatkan kelas .

Contoh Java ClassNotFoundException

Berikut ialah contoh berikut yang disebut di bawah:

Contoh #1

Atur cara Java untuk menunjukkan ClassNotFoundException:

 Kod:

//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);
}
}

Output program di atas adalah seperti yang ditunjukkan dalam syot kilat di bawah:

Java ClassNotFoundException

Dalam program di atas, kelas yang dipanggil demo Pengecualian ditakrifkan. Kemudian kaedah utama dipanggil. Kemudian pembolehubah rentetan ditakrifkan yang mana laluan pemacu JDBC ditetapkan. Kemudian kaedah utama dipanggil, yang membuang pengecualian. Pemuat kelas cuba mencari laluan pemacu JDBC bagi kelas yang ditentukan dan kaedah nama dalam kelas mencari kelas yang disebutkan, yang gagal ditemui; maka ClassNotFoundException dibuang. Output program adalah seperti yang ditunjukkan dalam syot kilat di atas.

Contoh #2

Program Java untuk menunjukkan ClassNotFoundException(String)

Kod:

//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);
}
}
}

Output program di atas adalah seperti yang ditunjukkan dalam syot kilat di bawah:

Java ClassNotFoundException

Dalam program di atas, kelas yang dipanggil semak ditentukan. Kemudian kaedah utama dipanggil. Kemudian kaedah utama dipanggil. Kemudian kelas tidak dijumpai pengecualian ditakrifkan dengan menggunakan blok cuba dan tangkap.  Kemudian kaedah nama depan dalam kelas mencari kelas yang disebutkan, yang gagal ditemui; maka ClassNotFoundException dilemparkan dan rentetan yang ditentukan sebagai mesej terperinci bersama-sama dengan kelas tidak dijumpai pengecualian dipaparkan. Output program adalah seperti yang ditunjukkan dalam syot kilat di atas.

Bagaimana untuk Mengelakkan ClassNotFoundException?

Langkah-langkah untuk mengelakkan ClassNotFoundException:

  • Fail kelas yang menyebabkan masalah di mana fail balang hadir mesti diketahui.
  • Kita harus menyemak sama ada laluan kelas atau laluan kelas terdiri daripada balang itu. Jika balang tidak terdapat dalam laluan kelas atau laluan kelas, kelas mesti ditambah dalam laluan kelas atau laluan kelas.
  • Jika kelas terdapat dalam laluan kelas atau classpath, maka kemungkinan besar terdapat penggantian classpath atau laluan kelas atau laluan yang ditentukan dalam fail jar atau skrip yang digunakan untuk memulakan sedang digunakan oleh permohonan itu. Untuk menyelesaikan masalah ini, kita perlu mencari laluan tepat kelas yang sedang digunakan oleh aplikasi.

Kesimpulan

Dalam tutorial ini, kami memahami konsep Class Not Found Exception dalam Java melalui definisi, sintaks Class Not Found Exception dalam Java, kerja Class Not Found Exception dalam Java dan pembinanya melalui contoh dan outputnya.

Atas ialah kandungan terperinci Java ClassNotFoundException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn