Nu s-a putut găsi sau încărca Java de clasă principală? Iată cum se remediază!

Nu s-a putut găsi sau încărca Java de clasă principală? Iată cum se remediază!

Dacă continuați să obțineți eroarea clasă principală care nu a fost găsită în proiectul dvs. Java fără niciun motiv aparent, nu vă faceți griji, nu sunteți singur.





Fiind una dintre cele mai imprevizibile și spontane erori, datorită tendinței JVM (Java Virtual Machine) de a rămâne pe un traseu de clasă implicit, problema „clasa principală care nu a fost găsită” este ceva care bântuie amatorii și profesioniștii deopotrivă.





Dar această problemă este de fapt mai puțin intimidantă decât pare. Citiți mai departe pentru a afla cum puteți scăpa definitiv de această eroare.





De ce nu s-a găsit clasa principală?

Înainte de a încerca să înțelegem cum și de ce JVM nu a reușit să găsească clasa principală, trebuie să înțelegem conceptul de Classpath în Java.

Ce este Classpath?

Classpath este calea fișierului pe care mediul de execuție Java îl caută pentru clase și alte fișiere de resurse. Poate fi setat utilizând fie -classpath opțiune la executarea unui program sau prin setarea sistemului CLASSPATH variabilă de mediu.



După cum sugerează și numele, este pur și simplu o cale a fișierului în care .clasă fișierele pot fi găsite într-un pachet sau director JDK.

Când JVM nu reușește să localizeze clasa principală, este adesea pentru că este în căutarea corespunzătoare .clasă fișiere aflate în clasa greșită. Desigur, modalitatea de a remedia această problemă este de a specifica manual classpath utilizând fie pachete, fie specificând classpath.





În acest moment, dacă doriți să vă reîmprospătați memoria claselor Java, consultați ghidul nostru pentru crearea de clase în Java .

cum adăugați mai multe imagini la povestea Instagram

Utilizarea pachetelor

Să creăm o clasă numită Test . Așezați-l într-un pachet numit TestPackage . Pachetele sunt utilizate în Java pentru a grupa clase similare sau pentru a oferi un spațiu de nume unic pentru clase.





În acest exemplu simplu, utilizarea unui pachet vă va ajuta să vizualizați modul în care funcționează calea de curs Java. În aplicația dvs. de gestionare a fișierelor, un pachet este reprezentat ca un folder independent.

package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}

Acum, deschideți un terminal nou și asigurați-vă că directorul dvs. de lucru este același cu cel care conține folderul pachetului. Puteți schimba directorul de lucru folosind CD comanda pe orice sistem de operare.

Compila Test.java executând următoarea comandă:

package testPackage;
javac testPackage/Test.java

Aceasta va salva fișierul binar compilat (fișierul .class) în testPackage.

Pentru a rula clasa compilată, trebuie să tastați numele clasei complet calificate în linia de comandă. Numele complet calificat al clasei Java se referă la numele său prefixat cu numele pachetului său. În acest caz, ar trebui să arate cam așa:

java testPackage.Test

Acest mod de apelare a fișierelor de clasă vă asigură, de asemenea, că puteți apela executabile din diferite pachete din același director de lucru. Tot ce trebuie să faceți este să modificați numele clasei complet calificate.

În implementări mai avansate, vă recomandăm să creați subfoldere separate pentru clasele și fișierele sursă pentru a gestiona mai bine fișierele din pachet.

Specificarea manuală a Classpath

Modul recomandat de a gestiona fișierele java este de a crea directoare separate pentru fișiere sursă și clase. Dacă lucrați la un proiect, este probabil să faceți deja acest lucru.

În mod convențional, directorul cu fișiere sursă este etichetat ca src iar cel cu fișiere .class este etichetat ca clase. Aceasta este, de asemenea, o modalitate de a vă asigura că probabilitatea ca JVM să nu găsească clasa principală să fie redusă semnificativ, datorită directorului structurat corespunzător.

Dacă folosim această metodă, așa va arăta structura de directoare înainte de a compila:

câți bani poți câștiga minând bitcoin
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Fiecare liniuță din ilustrația de mai sus corespunde unui nivel al ierarhiei fișierelor pe care ar trebui să îl urmeze proiectul dvs.

Pentru a compila acest lucru, asigurați-vă că directorul dvs. de lucru este folderul meu. Acum, tastați următoarea comandă:

javac -d classes src/testPackage/Test.java

The .clasă executabil ar trebui să fie salvat în myFolder / classes / testPackage . În consecință, structura directorului de fișiere arată cam așa:

|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class

Pentru a rula .clasă fișier, rulați comanda Java cu numele clasei complet calificate și specificați calea de clasă locală. Fiecare cale este declarată în raport cu directorul de lucru, care în acest caz este folderul meu.

java -classpath classes testPackage

Rularea acestei comenzi ar trebui să vă ofere rezultatul dorit. Dar, de ce este necesară atâta reorganizare pentru a rezolva o eroare simplă?

Importanța organizării fișierelor în Java

Motivul pentru care „Nu s-a putut găsi sau încărca clasa principală” este că JVM nu a putut găsi unde .clasă fișierele erau stocate.

Cel mai simplu mod de a rezolva această eroare este să controlați unde sunt stocate fișierele .class și să spuneți în mod explicit JVM să se uite acolo. Acest lucru este posibil prin organizarea fișierelor sursă și a fișierelor executabile separat și controlarea a tot dintr-un director de lucru.

Pe măsură ce începeți să adăugați construcții precum moştenire la proiectul dvs., complexitatea sistemului de fișiere este obligată să crească varietatea. În astfel de proiecte sau chiar în cele în care este necesară utilizarea fișierelor JAR sau a bibliotecilor personalizate, simpla practică de separare și gestionare a fișierelor vă poate economisi nenumărate ore de depanare și depanare.

Pentru a citi mai multe despre cum funcționează classpath în Java și despre numeroasele lucruri pe care le puteți controla atunci când vine vorba de rularea codului dvs., puteți arunca o privire și asupra Oracle’s referință detaliată și ușor de utilizat .

Acțiune Acțiune Tweet E-mail Cele mai bune 10 proiecte pentru începători pentru noii programatori

Doriți să învățați programarea, dar nu știți de unde să începeți? Aceste proiecte și tutoriale de programare pentru începători vă vor începe.

pot rambursa jocurile pe Steam
Citiți în continuare Subiecte asemănătoare
  • Programare
  • Java
Despre autor Yash Chellani(10 articole publicate)

Yash este un student aspirant la informatică, căruia îi place să construiască lucruri și să scrie despre toate lucrurile din tehnologie. În timpul liber, îi place să joace Squash, să citească o copie a ultimului Murakami și să vâneze dragoni în Skyrim.

Mai multe de la Yash Chellani

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona