Kon hoofdklasse Java niet vinden of laden? Hier leest u hoe u het kunt oplossen!

Kon hoofdklasse Java niet vinden of laden? Hier leest u hoe u het kunt oplossen!

Als je zonder duidelijke reden de hoofdklasse niet gevonden-fout in je Java-project krijgt, maak je dan geen zorgen, je bent niet de enige.





Als een van de meest onvoorziene en spontane fouten, dankzij de neiging van JVM (Java Virtual Machine) om vast te houden aan een standaard klassenpad, is het probleem 'hoofdklasse niet gevonden' iets dat zowel amateurs als professionals achtervolgt.





Maar dit probleem is eigenlijk minder intimiderend dan het lijkt. Lees verder om erachter te komen hoe u voor eens en voor altijd van deze fout af kunt komen.





Waarom werd de hoofdklasse niet gevonden?

Voordat we proberen te begrijpen hoe en waarom JVM de hoofdklasse niet kon vinden, moeten we het concept begrijpen van: Klaspad op Java.

Wat is klassenpad?

Het klassenpad is het bestandspad waarin de Java-runtimeomgeving zoekt naar klassen en andere bronbestanden. Het kan worden ingesteld met behulp van de -klassenpad optie bij het uitvoeren van een programma of door het systeem in te stellen KLASSPAAT omgevingsvariabele.



Zoals de naam al doet vermoeden, is het gewoon een bestandspad waar de .klas bestanden kunnen worden gevonden in een JDK-pakket of -map.

Wanneer de JVM de hoofdklasse niet kan vinden, is dat vaak omdat hij op zoek is naar de overeenkomstige .klas bestanden in het verkeerde klassenpad. De manier om dit probleem op te lossen is natuurlijk om het klassenpad handmatig te specificeren door pakketten te gebruiken of door het klassenpad op te geven.





Als je op dit moment je geheugen van Java-klassen wilt opfrissen, bekijk dan onze gids voor: klassen maken in Java .

waarom het goed is om sociale media te verwijderen

Pakketten gebruiken

Laten we een klas maken met de naam Toets . Plaats het in een pakket genaamd testPakket . Pakketten worden in Java gebruikt om vergelijkbare klassen te groeperen of om een ​​unieke naamruimte voor klassen te bieden.





In dit eenvoudige voorbeeld zal het gebruik van een pakket u helpen visualiseren hoe Java's klassenpad werkt. In uw bestandsbeheertoepassing wordt een pakket weergegeven als een onafhankelijke map.

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

Open nu een nieuwe terminal en zorg ervoor dat uw werkmap dezelfde is als die met de pakketmap. U kunt de werkdirectory wijzigen met behulp van de CD commando op elk besturingssysteem.

Compileren Test.java door het volgende commando uit te voeren:

package testPackage;
javac testPackage/Test.java

Hiermee wordt het gecompileerde binaire bestand (het .class-bestand) opgeslagen in testPackage.

Om de gecompileerde klasse uit te voeren, moet u de volledig gekwalificeerde klassenaam in de opdrachtregel typen. De volledig gekwalificeerde naam van een Java-klasse verwijst naar de naam voorafgegaan door de pakketnaam. In dit geval zou dit er ongeveer zo uit moeten zien:

java testPackage.Test

Deze manier van aanroepen van klassenbestanden zorgt er ook voor dat je uitvoerbare bestanden van verschillende pakketten uit dezelfde werkdirectory kunt aanroepen. Het enige dat u hoeft te doen, is de volledig gekwalificeerde klassenaam wijzigen.

In meer geavanceerde implementaties raden we je aan om aparte submappen te maken voor je klassen en bronbestanden om bestanden binnen het pakket beter te beheren.

Klaspad handmatig opgeven

De aanbevolen manier om uw java-bestanden te beheren, is door aparte mappen te maken voor bronbestanden en klassen. Als u aan een project werkt, is de kans groot dat u dit al doet.

Conventioneel wordt de map met bronbestanden gelabeld als src en degene met .class-bestanden is gelabeld als klassen. Dit is ook een manier om ervoor te zorgen dat de kans dat JVM de hoofdklasse niet vindt aanzienlijk wordt verkleind, dankzij de goed gestructureerde directory.

Als we deze methode gebruiken, is dit hoe de directorystructuur eruit zal zien voor het compileren:

hoe de geschiedenis van een woning online te vinden
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Elke inspringing in de bovenstaande afbeelding komt overeen met één niveau van de bestandshiërarchie dat uw project zou moeten volgen.

Om dit te compileren, moet u ervoor zorgen dat uw werkmap myFolder is. Typ nu de volgende opdracht:

javac -d classes src/testPackage/Test.java

De .klas uitvoerbaar bestand moet worden opgeslagen in myFolder/classes/testPackage . Dienovereenkomstig ziet de bestandsdirectorystructuur er ongeveer zo uit:|__+_|

om de . te runnen .klas bestand, voert u de Java-opdracht uit met de volledig gekwalificeerde klassenaam en geeft u het lokale klassenpad op. Elk pad wordt gedeclareerd ten opzichte van de werkdirectory, in dit geval myFolder.

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

Het uitvoeren van deze opdracht zou u de gewenste uitvoer moeten geven. Maar waarom is er zoveel reorganisatie nodig om een ​​simpele fout op te lossen?

Het belang van het ordenen van bestanden in Java

De reden waarom de 'Kan hoofdklasse niet vinden of laden' wordt gegooid, is omdat JVM niet kon vinden waar uw .klas bestanden werden opgeslagen.

De eenvoudigste manier om deze fout op te lossen, is door te bepalen waar de .class-bestanden worden opgeslagen en JVM expliciet te vertellen daar te zoeken. Dit wordt mogelijk gemaakt door uw bronbestanden en uitvoerbare bestanden afzonderlijk te organiseren en alles vanuit een werkmap te controleren.

Terwijl u constructies begint toe te voegen, zoals erfenis voor uw project zal de complexiteit van het bestandssysteem ongetwijfeld toenemen. In dergelijke projecten of zelfs die waarbij het gebruik van JAR-bestanden of aangepaste bibliotheken vereist is, kan de eenvoudige praktijk van het scheiden en beheren van bestanden u talloze uren aan probleemoplossing en foutopsporing besparen.

Om meer te lezen over hoe classpath werkt in Java en de vele dingen die u kunt controleren als het gaat om het uitvoeren van uw code, kunt u ook een kijkje nemen in Oracle's gedetailleerde en gebruiksvriendelijke referentie .

Deel Deel Tweeten E-mail De 10 beste beginnersprojecten voor nieuwe programmeurs

Wil je leren programmeren, maar weet je niet waar te beginnen? Deze programmeerprojecten en tutorials voor beginners zullen je op weg helpen.

waarom verschijnt het systeemstation (c:) niet op de selectie waar u uw back-uppagina wilt opslaan?
Lees volgende Gerelateerde onderwerpen
  • Programmeren
  • Java
Over de auteur Yash Chellani(10 artikelen gepubliceerd)

Yash is een aspirant-student computerwetenschappen die ervan houdt dingen te bouwen en te schrijven over alles wat met technologie te maken heeft. In zijn vrije tijd speelt hij graag squash, leest hij een exemplaar van de nieuwste Murakami en jaagt hij op draken in Skyrim.

Meer van Yash Chellani

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren