Fix: nu a putut găsi sau încărca clasa principală

Eroarea „ Nu s -a putut găsi sau încărca clasa principală ” apare atunci când se utilizează o comandă java din promptul de comandă pentru a lansa un program Java, specificând numele clasei din terminal. Motivul pentru care se întâmplă acest lucru se datorează în mare parte greșelii de programare a utilizatorului în timp ce declară clasa.

Nu a putut găsi sau încărca linia de comandă Java de clasă principală

Așa cum am menționat anterior, această eroare nu are legătură cu sistemul și utilizatorul face o greșeală în mai multe scenarii, așa cum se arată mai jos. Înainte de a merge mai departe, presupunem că aveți o cunoaștere de bază a limbajului de programare Java și a modului de funcționare al acestuia.

Ce cauzează eroarea „Nu am putut găsi sau încărca clasa principală” în Java?

Mesajul „Nu a putut găsi sau încărca clasa principală” înseamnă că primul pas al motorului Java de preluare a clasei pentru executare a eșuat. Comanda java nu a putut localiza clasa la directorul corect.

În unele cazuri, trebuie să adăugați calea corectă a fișierului și să indicați terminalul Java către locația corectă. Din moment ce executați comanda de la terminalul liniei de comandă, computerul nu știe unde trebuie să se găsească clasa sau unde se află. În IDE-urile vizate, aceasta nu este problema, deoarece IDE păstrează un indicator îndreptat către directorul de lucru curent.

Ce este sintaxa „java”?

Înainte de a începe depanarea de ce terminalul ne returnează o eroare atunci când încercăm să executăm, mai întâi trebuie să analizăm sintaxa comenzii. Dacă nu utilizați sintaxa corectă, vă veți confrunta inevitabil cu această eroare.

Sintaxa normală a comenzii este așa:

 java [...] [...] 

Iată o opțiune de linie de comandă, este un nume de clasă Java complet calificat și este un argument de linie de comandă care este transmis aplicației dvs. când întregul pachet este compilat.

Un exemplu de comandă validă este:

 java -Xmx100m com.acme.example.ListAppuals kevin săgeți bart 

Comanda de mai sus va face ca comanda java să execute următoarele operații:

  • Acesta va căuta o versiune compilată a clasei „ com.acme.example.ListAppuals ”.
  • După căutare, va încărca clasa.
  • În continuare, atunci când clasa este încărcată, clasa va fi căutată pentru o metodă „principală” cu o semnătură valabilă, modificatori și tip retur. Un exemplu de clasă principală ar fi ceva de genul:
 public static void main (String []) 
  • Metoda va fi apelată cu argumente „kevin”, „săgeți” și „bart” ca șir [].

Cum se remediază „Nu s-a putut găsi sau încărca clasa principală”

Soluția 1: Verificarea argumentului numelui clasei

Cea mai frecventă greșeală pe care o fac utilizatorii este aceea că furnizează un nume de clasă greșit ca argument (sau un nume de clasă corect este o formă greșită). Întrucât declaram parametri pe linia de comandă, este foarte probabil să treceți argumentul cu numele clasei într-o formă greșită. Aici vom enumera toate scenariile posibile în care puteți face o greșeală.

  • Scrierea unui nume de clasă simplu . Dacă declarați clasa într-un pachet, cum ar fi „com.acme.example”, trebuie să folosiți numele complet de clasă, inclusiv pachetul din comanda Java.
 java com.acme.exemple.ListAppuals 

in loc de

 java ListAppuals 
  • Ar trebui declarați un nume de clasă în loc să declarați un nume de fișier sau un nume de nume. Java nu preia clasa dacă declarați numele de nume / fișier pentru aceasta. Înregistrările incorecte includ următoarele:
 java ListAppuals.class java com / acme / exemplu / ListAppuals.class 
  • Carcasa trebuie luată în considerare. Comenzile Java sunt sensibile cu majuscule și minuscule, iar dacă greșești măcar o literă, nu vei putea încărca clasa principală. Un exemplu de greșeli incorecte sunt:
 java com.acme.exemple.listappuals 
  • Nu ar trebui să declarați un nume de fișier sursă . Așa cum am menționat anterior, nu trebuie decât să declarați clasa în formatul corect de nume complet. Exemplu de greșeală este:
 java ListAppuals.java 
  • Această eroare va apărea, de asemenea, dacă faceți o greșeală de tastare sau uitați să scrieți complet numele clasei .

Dacă ați făcut greșeli înclinate în declararea numelui de clasă, asigurați-vă că îl remediați și apoi încercați să lansați programul.

Soluția 2: Verificarea traseului de clasă

Dacă ați declarat corect numele de clasă, dar vi se arată încă eroarea, este posibil ca comanda java să nu găsească numele de clasă specificat la cale. Calea de clasă este o cale în care runtime Java caută fișiere de resurse și clase. Puteți seta cu ușurință calea de clasă folosind două comenzi diferite, după cum se arată mai jos:

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

Pentru a obține mai multe informații cu privire la calea de clasă, ar trebui să consultați următoarele documente.

Documentația de comandă Java

Setarea traseului de clasă

Soluția 3: verificarea directorului

Când declarați un director ca un traseu de clasă, acesta va corespunde întotdeauna la rădăcina spațiului de nume. De exemplu, dacă „/ usr / local / acme / classes” se află pe calea de clasă, Java va căuta o clasă „com.acme.example.Appuals”. Acesta va căuta o clasă cu următorul nume:

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

Deci, în esență, dacă introduceți următoarea adresă în ruta de clasă, Java nu va putea găsi clasa:

 / Usr / local / Acme / clase / com / Acme / exemplu 

De asemenea, ar trebui să vă verificați subdirectorul și să vedeți dacă se potrivește cu FQN. Dacă FQN-ul claselor dvs. este „com.acme.example.Appuals”, Java va căuta o „Appuals.class” în directorul „com / acme / exemplu”.

Pentru a vă oferi un exemplu, să presupunem următorul scenariu:

  • Clasa pe care doriți să o rulați este: com.acme.example.Appuals
  • Calea completă a fișierului este: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Directorul de lucru curent este: / usr / local / acme / classes / com / acme / exemplu /

Apoi vor apărea următoarele scenarii:

 # greșit, FQN este nevoie de java Appuals # greșit, nu există un folder com / acme / exemplu` în directorul de lucru curent java com.acme.example.Appuals # greșit, similar cu scenariul java de mai sus. com.acme.example.Appuals # OK; o relativă cale de clasă este setată java -classpath ../../ .. com.acme.example.Appuals # OK; este setat un curs de clasă absolut java -classpath / usr / local / acme / classes com.acme.example.Appuals 

Notă: Calea de clasă trebuie să includă și toate celelalte clase (non-sistem) de care are nevoie aplicațiile tale.

Soluția 4: verificarea pachetului clasei

Dacă toate soluțiile de mai sus sunt valabile în cazul dvs., trebuie să vă asigurați că codul sursă este plasat în folderul corect. De asemenea, ați declarat corect pachetul . Dacă executați codul dvs. cu un IDE, probabil vă va informa cu privire la problemă. Cu toate acestea, în cazul nostru, din moment ce îl executăm în promptul de comandă, greșeala va trece neobservată și veți primi eroarea de clasă în discuție.

Articole Interesante