Rumah > Java > javaTutorial > teks badan

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

王林
Lepaskan: 2023-09-11 18:21:04
ke hadapan
1027 orang telah melayarinya

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.........");
   }
}
Salin selepas log masuk
Exceptioning

Semasa

Exceptioning

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

D:\>javac -d . Sample.java
Salin selepas log masuk
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,

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();
          }
       }
    }
    Salin selepas log masuk
  • 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)
    Salin selepas log masuk

    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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!