Correzione: impossibile trovare o caricare la classe principale

L'errore " Impossibile trovare o caricare la classe principale " si verifica quando si utilizza un comando java nel prompt dei comandi per avviare un programma Java specificando il nome della classe nel terminale. Il motivo per cui ciò accade è principalmente dovuto all'errore di programmazione dell'utente durante la dichiarazione della classe.

Impossibile trovare o caricare la riga di comando Java di classe principale

Come accennato in precedenza, questo errore non è in gran parte correlato al sistema e l'utente commette un errore in diversi scenari, come mostrato di seguito. Prima di andare avanti, supponiamo che tu abbia una conoscenza di base del linguaggio di programmazione Java e di come funziona.

Cosa causa l'errore "Impossibile trovare o caricare la classe principale" in Java?

Il messaggio "Impossibile trovare o caricare la classe principale" significa che il primo passo del motore Java che ha recuperato la classe per l'esecuzione non è riuscito. Il comando java non è stato in grado di individuare la classe nella directory corretta.

In alcuni casi, è necessario aggiungere il percorso file corretto e puntare il terminale Java nella posizione corretta. Poiché si sta eseguendo il comando dal terminale della riga di comando, il computer non sa dove si trova la classe o dove si trova. Negli IDE di destinazione, questo non è il problema poiché l'IDE mantiene un puntatore che punta verso la directory di lavoro corrente.

Cos'è la sintassi 'java'?

Prima di iniziare la risoluzione dei problemi per cui il terminale ci sta restituendo un errore durante il tentativo di esecuzione, per prima cosa dobbiamo esaminare la sintassi del comando. Se non si utilizza la sintassi corretta, si dovrà inevitabilmente affrontare questo errore.

La normale sintassi del comando è qualcosa del genere:

 java [...] [...] 

Ecco un'opzione della riga di comando, è un nome di classe Java completo ed è un argomento della riga di comando che viene passato all'applicazione quando viene compilato l'intero pacchetto.

Un esempio di un comando valido è:

 java -Xmx100m com.acme.example.ListAppuals kevin frecce bart 

Il comando precedente consentirà al comando java di eseguire le seguenti operazioni:

  • Cercherà una versione compilata della classe " com.acme.example.ListAppuals ".
  • Dopo la ricerca, caricherà la classe.
  • Successivamente, quando la classe viene caricata, la classe verrà cercata per un metodo "principale" con firma, modificatori e tipo restituiti validi. Una classe principale di esempio sarebbe simile a:
 public static void main (String []) 
  • Il metodo verrà chiamato con gli argomenti 'kevin', 'frecce' e 'bart' come stringa [].

Come risolvere "Impossibile trovare o caricare la classe principale"

Soluzione 1: controllo argomento nome classe

L'errore più comune che gli utenti commettono è che forniscono un nome di classe errato come argomento (o un nome di classe corretto è un modulo sbagliato). Poiché stiamo dichiarando i parametri sulla riga di comando, è molto probabile che passerai l'argomento del nome della classe in una forma errata. Qui elencheremo tutti i possibili scenari in cui è possibile commettere un errore.

  • Scrivere un semplice nome di classe . Se si dichiara la classe in un pacchetto come 'com.acme.example', è necessario utilizzare il nome completo della classe incluso il pacchetto nel comando Java.
 java com.acme.example.ListAppuals 

invece di

 java ListAppuals 
  • Dovresti dichiarare un nome di classe invece di dichiarare un nome file o percorso. Java non recupera la classe se si dichiara un percorso / nome file per essa. Le voci errate includono quanto segue:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • L'involucro dovrebbe essere preso in considerazione. I comandi Java fanno distinzione tra maiuscole e minuscole e se commetti un errore anche di una sola lettera, non sarai in grado di caricare la classe principale. Un esempio di errori errati sono:
 java com.acme.example.listappuals 
  • Non devi dichiarare un nome file sorgente . Come accennato in precedenza, devi solo dichiarare la classe nel formato completo completo del nome classe. Esempio di errore è:
 java ListAppuals.java 
  • Questo errore si verifica anche se si commette un errore di battitura o si dimentica di scrivere il nome della classe interamente .

Se hai commesso errori sciatti nel dichiarare il nome della classe, assicurati di risolverlo e quindi prova ad avviare il programma.

Soluzione 2: controllo del percorso di classe

Se il nome classe è stato dichiarato correttamente ma viene ancora visualizzato l'errore, è probabile che il comando java non sia riuscito a trovare il nome classe specificato nel percorso. Il percorso di classe è un percorso in cui il runtime Java cerca file di risorse e classi. Puoi impostare facilmente il percorso di classe usando due diversi comandi come mostrato di seguito:

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

Per ulteriori informazioni sul percorso di classe, è necessario consultare i seguenti documenti.

Documentazione sui comandi Java

Impostazione del percorso di classe

Soluzione 3: controllo della directory

Quando dichiari una directory come percorso di classe, corrisponderà sempre alla radice dello spazio dei nomi. Ad esempio, se "/ usr / local / acme / classes" si trova sul percorso di classe, Java cercherà una classe "com.acme.example.Appuals". Cercherà una classe con il seguente percorso:

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

Quindi, in sostanza, se inserisci il seguente indirizzo nel classpath, Java non sarà in grado di trovare la classe:

 / Usr / local / Acme / classes / com / Acme / example 

Dovresti anche controllare la tua sottodirectory e vedere se corrisponde all'FQN. Se il tuo FQN delle classi è "com.acme.example.Appuals", Java cercherà un "Appuals.class" nella directory "com / acme / example".

Per darvi un esempio, supponiamo che il seguente scenario:

  • La classe che vuoi eseguire è: com.acme.example.Appuals
  • Il percorso completo del file è: /usr/local/acme/classes/com/acme/example/Appuals.class
  • La directory di lavoro corrente è: / usr / local / acme / classes / com / acme / example /

Quindi si terranno i seguenti scenari:

 # errato, è necessario FQN java Appuals # errato, non esiste una cartella `com / acme / example` nella directory di lavoro corrente java com.acme.example.Appuals # wrong, simile allo scenario sopra java -classpath. com.acme.example.Appuals # OK; un relativo percorso di classe è impostato java -classpath ../../ .. com.acme.example.Appuals # OK; viene impostato un percorso di classe assoluto java -classpath / usr / local / acme / classes com.acme.example.Appuals 

Nota: il percorso di classe deve includere anche tutte le altre classi (non di sistema) richieste dalle applicazioni.

Soluzione 4: controllo del pacchetto di classe

Se tutte le soluzioni sopra riportate sono vere nel tuo caso, devi assicurarti che il tuo codice sorgente sia collocato nella cartella corretta. Inoltre, hai dichiarato correttamente il pacchetto . Se esegui il tuo codice con un IDE, probabilmente ti informerà riguardo al problema. Tuttavia, nel nostro caso, poiché lo stiamo eseguendo nel prompt dei comandi, l'errore passerà inosservato e otterrai l'errore di classe in discussione.

Articoli Interessanti