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 classe principale nella riga di comando Java

Come accennato in precedenza, questo errore non è per lo più correlato al sistema e l'utente commette un errore in diversi scenari come mostrato di seguito. Prima di andare avanti, assumiamo 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 passaggio del motore Java che recupera 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é stai eseguendo il comando dal terminale della riga di comando, il computer non sa dove si trova la classe o dove si trova. Negli IDE mirati, questo non è il problema poiché l'IDE mantiene un puntatore puntato verso la directory di lavoro corrente.

Cos'è la sintassi "java"?

Prima di iniziare a risolvere il motivo per cui il terminale ci restituisce un errore durante il tentativo di esecuzione, dobbiamo prima esaminare la sintassi del comando. Se non stai usando la sintassi corretta, dovrai 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 l'intero pacchetto viene compilato.

Un esempio di un comando valido è:

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

Il comando precedente farà eseguire al comando java 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, verrà cercato un metodo "principale" con una firma, modificatori e un tipo restituito validi. Una classe principale di esempio sarebbe qualcosa del tipo:
public static void main (String [])
  • Il metodo verrà chiamato con gli argomenti "kevin", "frecce" e "bart" come stringa [].

Come risolvere il problema "Impossibile trovare o caricare la classe principale"

Soluzione 1: controllo dell'argomento del nome della classe

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

  • Scrivere un semplice nome di classe . Se dichiari la classe in un pacchetto come "com.acme.example", devi utilizzare il nome classe completo, 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 di file o un percorso. Java non recupera la classe se dichiari 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 sbagli anche solo una lettera, non sarai in grado di caricare la classe principale. Un esempio di errori errati sono:
java com.acme.example.listappuals
  • Non dovresti dichiarare un nome di file sorgente . Come accennato prima, devi solo dichiarare la classe nel formato completo del nome della classe corretto. Esempio di errore è:
java ListAppuals.java
  • Questo errore si verificherà anche se si commette un errore di digitazione o si dimentica di scrivere interamente il nome della classe .

Se hai commesso degli errori trascurati nel dichiarare il nome della classe, assicurati di correggerlo e poi prova ad avviare il programma.

Soluzione 2: controllo classpath

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

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

Per avere maggiori informazioni riguardo al classpath, dovresti controllare i seguenti documenti.

Documentazione dei comandi Java

Impostazione del percorso di classe

Soluzione 3: controllo della directory

Quando dichiari una directory come classpath, corrisponderà sempre alla radice dello spazio dei nomi. Ad esempio, se "/ usr / local / acme / classes" è sul classpath, 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 al FQN. Se il FQN delle classi è "com.acme.example.Appuals", Java cercherà un "Appuals.class" nella directory "com / acme / example".

Per darti un esempio, supponiamo il seguente scenario:

  • La classe che desideri 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 i seguenti scenari terrebbero:

# sbagliato, è necessario FQN java Appuals # sbagliato, non c'è nessuna cartella `com / acme / example` nella directory di lavoro corrente java com.acme.example. Appuals # sbagliato, simile allo scenario precedente java -classpath. com.acme.example.Appuals # OK; viene impostato un classpath relativo java -classpath ../../ .. com.acme.example.Appuals # OK; viene impostato un classpath assoluto java -classpath / usr / local / acme / classes com.acme.example.

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

Soluzione 4: controllo del pacchetto della classe

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

Raccomandato

Correzione: Minecraft non rispondeva
Che cos'è l'applicazione di registrazione del dispositivo del sintonizzatore TV digitale e deve essere rimossa?
Cos'è FileRepMalware e dovresti rimuoverlo