Rumah  >  Artikel  >  Java  >  Mengapa di Java, kita mendapat ClassNotFoundException apabila kelas itu wujud?

Mengapa di Java, kita mendapat ClassNotFoundException apabila kelas itu wujud?

王林
王林ke hadapan
2023-09-11 18:21:041002semak imbas

Mengapa di Java, kita mendapat ClassNotFoundException apabila kelas itu wujud?

Setiap kali kita cuba memuatkan kelas, jika pemuat kelas tidak dapat mencari kelas pada laluan yang ditentukan, ClassNotFoundException akan dijana.

Ini boleh berlaku apabila melaksanakan program java yang memuatkan kelas secara eksplisit menggunakan kaedah forName() kelas bernama Class atau kaedah loadClass() kelas ClassLoader. Kedua-dua kelas ini menerima nilai rentetan yang mewakili nama kelas dan memuatkan kelas yang ditentukan.

Apabila menghantar nama kelas kepada kaedah ini, anda perlu memastikan -

    Nama kelas yang dihantar kepada kaedah ini hendaklah tepat.

  • Kelas yang ditentukan (bersama-sama dengan pakej) hendaklah terletak dalam direktori semasa atau laluannya hendaklah disenaraikan dalam laluan kelas pembolehubah persekitaran. . pakej dalam myPackage.example dan jana fail

    .class
  • kelas
Sample

di dalamnya. Jadi apabila memuatkan kelas ini, anda perlu meletakkannya dalam direktori yang sama dan lulus nama kelas mutlak kepada

Class.forName()

atau loadClass()Contoh Live Demo

package myPackage.example;
public class Sample {
   static {
      System.out.println("The class named Sample loaded successfully.........");
   }
}
Exceptioning

Semasa

Exceptioning

program di atas, anda akan mendapat pengecualian berikut kerana salah ejaan nama pakej.

D:\>javac -d . Sample.java
Jika anda cuba mengakses kelas tertentu daripada direktori lain, anda perlu menetapkan laluan kelas - Satu folder (pakej paling luar) yang mengandungi fail .class berikut. Atau, p>

fail balang yang mengandungi kelas.

Dengan mengandaikan kami telah membetulkan isu ejaan dan cuba memuatkan kelas dari fail Java dalam direktori E://

Contoh

Demonstrasi Langsung
    public class ClassNotFoundExample {
       public static void main(String args[]) {
          try {
             Class.forName("myPackage.exampl.Sample");
          }catch (ClassNotFoundException ex) {
             ex.printStackTrace();
          }
       }
    }
  • Pengecualian

    masih menghadapi pengecualian yang sama pakej untuk fail kelas .class yang ditentukan (atau fail jar yang mengandunginya) tiada dalam direktori semasa mahupun dalam senarai laluan bagi classpath pembolehubah persekitaran.

    D:\>java ClassNotFoundExample
    java.lang.ClassNotFoundException: myPackage.exampl.Sample
       at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
       at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
       at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
       at java.base/java.lang.Class.forName0(Native Method)
       at java.base/java.lang.Class.forName(Unknown Source)
       at ClassNotFoundExample.main(ClassNotFoundExample.java:4)

    Dalam senario semasa, tetapkan laluan kelas ke direktori yang mengandungi pakej kelas yang diperlukan iaitu "
  • D://
  • " dan jalankan program java di atas untuk menjadikannya berfungsi.

    rreeee

Atas ialah kandungan terperinci Mengapa di Java, kita mendapat ClassNotFoundException apabila kelas itu wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam