Secara amnya, kami menggunakan alatan untuk mengedit dan menyahpepijat kod, seperti eclipse, Manven, Android Studio, sublime, vim, notepad, notepad, dsb.
Apabila kami mencipta fail projek dan kelas java menggunakan eclipse android studio, dsb., semuanya mempunyai nama pakej Ia disusun dan dijalankan seperti biasa dengan alatan, tetapi apabila kami beralih ke baris arahan untuk pelaksanaan:
javac xxx. .java
java xxx
berkemungkinan besar akan muncul apabila找不到或无法加载主类
Apabila kita mula-mula mempelajari Java, nama pakej (pakej) tidak ditetapkan dalam fail kelas perhatian kepada classpath dalam kes ini, pada dasarnya tiada masalah. Tetapi apabila kami menggunakan alat (eclipse, android studio) untuk menulis kod, lokasi fail kod berada dalam direktori dipisahkan dengan nama pakej Ambil perhatian bahawa ini ialah direktori fizikal relatif (com/eagle/. app). Dan nama pakej (pakej) diisytiharkan dalam kod, yang boleh dianggap sebagai direktori maya (com.eagle.app). Artikel ini menerangkan terutamanya punca ralat dan penyelesaian yang betul apabila tiada masalah dengan classpath dan PATH pembolehubah persekitaran sistem.
Fail kod adalah sangat mudah seperti berikut:
package com.eagle.app; public class MainJava { public static void main(String[] args) { if (args != null) { for (String arg : args) { System.out.println("arg = " + arg); } System.out.println("arg = " + args); } else { System.out.println("args = " + null); } }
Seperti yang ditunjukkan di atas, mengambil Android studio sebagai contoh Nota
1. Terdapat direktori src di bawah direktori projek, tetapi ia mengandungi fail keseluruhan apl, bukan direktori "src" bagi kod itu; direktori ialah direktori kod.
2. Ini ialah direktori "src" kod dan terdapat "direktori" yang sepadan dengan nama pakej kami com/eagle/app
Untuk menyusun MainJava, gunakan:
//cd 到app目录 javac MainJava.java
atau
//cd 到eagle 目录 javac app/MainJava.java
atau bahkan
//cd 到main目录 javac java/com/eagle/app/MainJava.java
tidak mengapa. Sudah tentu ia boleh menjadi mana-mana lokasi + direktori relatif.
Mari kita kembali dan terangkan: berbanding dengan direktori yang sedang dilaksanakan (seperti direktori aplikasi, direktori helang, direktori utama), laluan fizikal ialah laluan komputer yang sah (xxx/xxx/xxx), jadi namanya adalah relatif kepada laluan fizikal.
Kalau ada yang tak kena, mesti jalan yang salah.
Nota: Direktori kod ditentukan berdasarkan direktori permulaan nama pakej apabila mencipta fail kod baharu
Ini sedikit menarik, biar saya tekankan, Nama pakej laluan maya: xxx.xxx.xxx, ia bukan direktori yang dipisahkan oleh "/", jadi ia dipanggil laluan maya.
Dalam gambar di atas, 2 ialah kod java dan 1 ialah fail bytecode yang dijana oleh kompilasi alat Sekarang untuk melaksanakan MainJava.class, arahan yang betul ialah:
/ /cd ke direktori utama dalam 1, bukan ke com atau direktori yang lebih rendah
F:\GSProject>cd javatest\build\classes\java\main F:\GSProject\javatest\build\classes\java\main>java com.eagle.app.MainJava
Nota: Jangan bawa .class (java com.eagle.app.MainJava.class tidak betul), juga Do tidak cuba menukar ke direktori lain dan menggunakan direktori relatif untuk melaksanakan, kerana arahan java mengiktiraf parameter berikut sebagai nama pakej.
Berikut adalah semua ralat
F:GSProjectjavatestbuildclassesjavamain>java com.eagle.app.MainJava.class
Ralat: Kelas utama com.eagle.app tidak ditemui atau tidak boleh ditemui dimuatkan. MainJava.class
F:GSProjectjavatestbuildclassesjava>java maincom.eagle.app.MainJava
tidak ditemui atau dimuatkan
Ralat: Main class maincom.eagle.app.MainJava
Baiklah, sekarang kami mengalihkan direktori yang dilingkari 1 dalam gambar di atas ke direktori javatest Kami melaksanakan java com.eagle.app.MainJava
F:\GSProject\javatest>java com.eagle.app.MainJava arg = [Ljava.lang.String;@75b84c92Hasilnya ialah alamat parameter fungsi utama dikeluarkan secara normal. Ia boleh dilihat bahawa kita boleh menjalankan kod bait kita sesuka hati, meletakkannya pada Linux atau Mac, dan dengan senang hati melakukan apa yang kita mahu lakukan. Struktur direktori dalam 1 ialah package com.eagle.app; pastikan anda memastikan bahawa laluan fail javac ialah **/xxx/xxx/xxx/Name.java**, dan
laluan fail java ialah
xxx.xx.x.Name, jangan bawa kelas.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan mesej ralat "Tidak dapat mencari atau memuatkan kelas utama" Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!