Rumah  >  Artikel  >  Java  >  Bagaimana untuk menyelesaikan mesej ralat "Tidak dapat mencari atau memuatkan kelas utama" Java

Bagaimana untuk menyelesaikan mesej ralat "Tidak dapat mencari atau memuatkan kelas utama" Java

王林
王林ke hadapan
2023-04-24 16:37:087469semak imbas

Kata Pengantar

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

Kompilasi javac xxx.java memerlukan laluan fizikal relatif

Bagaimana untuk menyelesaikan mesej ralat Tidak dapat mencari atau memuatkan kelas utama Java

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

Pelaksanaan java xxx memerlukan laluan maya

Ini sedikit menarik, biar saya tekankan, Nama pakej laluan maya: xxx.xxx.xxx, ia bukan direktori yang dipisahkan oleh "/", jadi ia dipanggil laluan maya.

Bagaimana untuk menyelesaikan mesej ralat Tidak dapat mencari atau memuatkan kelas utama Java

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
Ralat: Main class maincom.eagle.app.MainJava

tidak ditemui atau dimuatkan

Baiklah, sekarang kami mengalihkan direktori yang dilingkari 1 dalam gambar di atas ke direktori javatest Kami melaksanakan java com.eagle.app.MainJava

Bagaimana untuk menyelesaikan mesej ralat Tidak dapat mencari atau memuatkan kelas utama Java

Bagaimana untuk menyelesaikan mesej ralat Tidak dapat mencari atau memuatkan kelas utama Java

F:\GSProject\javatest>java com.eagle.app.MainJava
arg = [Ljava.lang.String;@75b84c92
Hasilnya 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!

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