Betulkan: Tidak dapat mencari atau memuat kelas utama

Kesalahan ' Tidak dapat mencari atau memuat kelas utama ' berlaku semasa menggunakan perintah java di prompt arahan untuk melancarkan program Java dengan menyatakan nama kelas di terminal. Sebab mengapa ini berlaku kebanyakan disebabkan oleh kesilapan pengaturcara pengguna semasa mengisytiharkan kelas.

Tidak dapat mencari atau memuatkan baris perintah utama - Java

Seperti yang dinyatakan sebelum ini, ralat ini kebanyakannya tidak berkaitan dengan sistem dan pengguna membuat kesilapan dalam beberapa senario seperti yang ditunjukkan di bawah. Sebelum bergerak ke hadapan, kami menganggap bahawa anda mempunyai pengetahuan asas mengenai bahasa pengaturcaraan Java dan bagaimana ia berfungsi.

Apa yang menyebabkan ralat 'Tidak dapat mencari atau memuat kelas utama' di Jawa?

Mesej 'Tidak dapat mencari atau memuat kelas utama' bermakna bahawa langkah pertama enjin Java yang mengambil kelas untuk pelaksanaan telah gagal. Perintah java tidak dapat mencari kelas di direktori yang betul.

Dalam sesetengah kes, anda perlu menambah laluan fail yang betul dan arahkan terminal Java ke lokasi yang betul. Memandangkan anda melaksanakan arahan dari terminal baris perintah, komputer tidak tahu di mana kelas ditemui atau di mana ia berada. Dalam IDE yang disasarkan, ini bukanlah masalah kerana IDE menyimpan penunjuk yang menunjuk ke arah direktori kerja semasa.

Apakah sintaks 'java'?

Sebelum kita mula mengatasi masalah mengapa terminal mengembalikan ralat kepada kami apabila cuba melaksanakan, terlebih dahulu kita perlu melihat sintaks perintah tersebut. Jika anda tidak menggunakan sintaks yang betul, anda akan menghadapi ralat ini tidak dapat dielakkan.

Sintaks normal arahan ini seperti ini:

 java [...] [...] 

Berikut ialah pilihan baris perintah, adalah nama kelas Java yang lengkap, dan hujah arahan baris yang dihantar ke aplikasi anda apabila keseluruhan pakej dikompilasi.

Contoh perintah yang sah ialah:

 java -Xmx100m com.acme.example.ListAppuals anak panah kevin bart 

Perintah di atas akan membuat perintah java melaksanakan operasi berikut:

  • Ia akan mencari versi kompilasi ' com.acme.example.ListAppuals ' kelas.
  • Selepas mencari, ia akan memuat kelas.
  • Seterusnya, apabila kelas dimuatkan, kelas akan dicari kaedah 'utama' dengan tandatangan, pengubah, dan jenis pemulangan yang sah. Kelas utama sampel akan menjadi seperti:
 public static void main (String []) 
  • Kaedah ini akan dipanggil dengan argumen 'kevin', 'anak panah', dan 'bart' sebagai rentetan [].

Cara Betulkan 'Tidak dapat mencari atau memuat kelas utama'

Penyelesaian 1: Memeriksa hujah nama kelas

Pengguna yang paling biasa membuat kesilapan adalah bahawa mereka menyediakan nama kelas yang salah sebagai hujah (atau nama kelas yang betul adalah bentuk yang salah). Oleh kerana kami mengisytiharkan parameter pada baris arahan, kemungkinan besar anda akan lulus hujah nama kelas dalam bentuk yang salah. Di sini kita akan menyenaraikan semua kemungkinan senario di mana anda boleh membuat kesilapan.

  • Menulis nama kelas yang mudah . Jika anda mengisytiharkan kelas dalam pakej seperti 'com.acme.example', anda mesti menggunakan nama kelas penuh termasuk pakej dalam perintah Java.
 java com.acme.example.ListAppuals 

bukannya

 java ListAppuals 
  • Anda harus mengisytiharkan nama kelas dan bukannya mengisytiharkan nama fail atau nama laluan. Java tidak mengambil kelas jika anda mengisytiharkan nama laluan / nama fail untuknya. Penyertaan tidak betul termasuk perkara berikut:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • Casing harus dipertimbangkan. Perintah Java adalah kes sensitif dan jika anda membuat kesilapan bahkan satu huruf, anda tidak akan dapat memuat kelas utama. Contoh kesilapan yang salah ialah:
 java com.acme.example.listappuals 
  • Anda tidak boleh mengisytiharkan nama fail sumber . Seperti yang dinyatakan sebelum ini, anda hanya perlu mengisytiharkan kelas dalam format nama kelas penuh yang betul. Contoh kesilapan ialah:
 java ListAppuals.java 
  • Kesalahan ini juga akan berlaku jika anda membuat kesilapan menaip atau lupa menulis nama kelas sepenuhnya .

Sekiranya anda membuat sebarang kesilapan dalam mengisytiharkan nama kelas, pastikan anda membetulkannya dan kemudian cuba melancarkan program tersebut.

Penyelesaian 2: Memeriksa classpath

Sekiranya anda telah mengisytiharkan nama kelas dengan betul tetapi masih menunjukkan ralat, kemungkinannya ialah perintah java tidak dapat mencari nama kelas yang ditentukan di laluan tersebut. Classpath adalah jalan di mana runtime Java mencari fail sumber dan kelas. Anda boleh dengan mudah menetapkan classpath menggunakan dua perintah yang berbeza seperti ditunjukkan di bawah:

 C:> sdkTool -classpath classpath1; classpath2 ... C:> set CLASSPATH = classpath1; classpath2 ... 

Untuk mendapatkan lebih banyak maklumat mengenai classpath, anda perlu menyemak dokumen berikut.

Dokumentasi arahan Java

Menetapkan classpath

Penyelesaian 3: Memeriksa direktori

Apabila anda mengisytiharkan direktori sebagai classpath, ia akan sentiasa sesuai dengan akar ruang nama. Contohnya jika "/ usr / local / acme / classes" ada di classpath, maka Java akan mencari kelas "com.acme.example.Appuals". Ia akan mencari kelas dengan nama laluan berikut:

 /usr/local/acme/classes/com/acme/example/Appuals.class 

Jadi pada dasarnya, jika anda meletakkan alamat berikut dalam classpath, Java tidak akan dapat mencari kelas:

 / usr / local / acme / classes / com / acme / contoh 

Anda juga harus memeriksa subdirektori anda dan lihat apakah ia sepadan dengan FQN. Sekiranya kelas FQN anda adalah "com.acme.example.Appuals", maka Java akan mencari "Appuals.class" dalam direktori "com / acme / example".

Untuk memberi contoh kepada anda, katakan senario berikut:

  • Kelas yang anda mahu jalankan ialah: com.acme.example.Appuals
  • Laluan fail penuh ialah: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Direktori kerja semasa ialah: / usr / local / acme / classes / com / acme / example /

Kemudian senario berikut akan memegang:

 # salah, FQN diperlukan java Appuals # salah, tiada folder `com / acme / example` dalam direktori kerja semasa java com.acme.example.Appuals # salah, serupa dengan senario di atas java -classpath. com.acme.example.Appuals # OK; classpath relatif ditetapkan java -classpath ../../..com.acme.example.Appuals # OK; classpath mutlak ditetapkan java -classpath / usr / local / acme / classes com.acme.example.Appuals 

Nota: Kelaspath perlu memasukkan semua kelas (bukan sistem) lain yang diperlukan oleh aplikasi anda.

Penyelesaian 4: Memeriksa pakej kelas

Jika semua penyelesaian di atas berlaku dalam kes anda, anda perlu memastikan bahawa kod sumber anda diletakkan di dalam folder yang betul. Juga, anda telah mengisytiharkan pakej dengan betul. Jika anda menjalankan kod anda dengan IDE, ia mungkin akan memaklumkan anda mengenai isu tersebut. Walau bagaimanapun, dalam kes kita, kerana kita menjalankannya dalam arahan cepat, kesilapan akan hilang tanpa disedari dan anda akan mendapat ralat kelas yang dibincangkan.

Artikel Yang Menarik