Het systeem 'kan hoofdklasse niet vinden of laden'? - Gemaakt

Als je een fout ziet als 'kon hoofdklasse niet vinden of laden, 'dit betekent meestal dat je een fout moet hebben gemaakt bij het declareren van de specifieke klasse tijdens het schrijven van een java-programma. De context start een java-programma door een java-opdracht uit te voeren in de opdrachtprompt. Er zijn verschillende soorten fouten die meestal optreden vanaf het einde van de gebruiker.

kon hoofdklasse niet vinden of laden

Dit artikel is bedoeld om u al dergelijke fouten en scenario's en de methoden voor het oplossen ervan te vertellen.

Uitwerking van de syntax 'Java

Voordat we beginnen met het oplossen van het probleem met de Java-functie, is het erg belangrijk om te weten waarom de terminal de foutmelding blijft geven wanneer deze wordt geprobeerd voor uitvoering. Dit zal ook beter worden gefaciliteerd met een basiskennis van de Java-programmeertaal en hoe je dit moet doen.

U zult het beter kunnen begrijpen door de syntaxis van de specifieke opdracht te kennen. Hier ligt het grootste probleem. Als u de verkeerde syntaxis gebruikt, leidt dit onvermijdelijk tot de fout.

Dit is de juiste syntaxis van het java-commando waar we het over hebben:

java [ …] [ …]

In het bovenstaande adres is de duidde de optie van de opdrachtregel aan. Ook de is de naam van een volledig authentieke Java-klasse. Ten slotte de geeft het argument van de opdrachtregel aan dat naar de toepassing wordt overgebracht terwijl het hele pakket wordt nageleefd.

Laten we u ook een voorbeeld geven van één geldige opdracht om u te helpen beter te begrijpen:

Java –Xmx100m com.acme.example.ListAppuals Kevin pijlen bart

Wanneer u de bovenstaande opdracht invoert, worden deze bewerkingen als gevolg hiervan uitgevoerd:

  • De opdracht start een zoekopdracht om een ​​volledig gecompileerde versie te vinden die is gekoppeld aan de klasse met de naam 'com.acme.voorbeeld.LijstAppuals'.
  • Zodra de zoekopdracht is voltooid, wordt de klasse geladen.
  • In dit stadium, zodra de klasse klaar is met laden, zal de opdracht plaats maken voor het onderzoeken van de klasse om de hoofdmethode te vinden met een modifier, return type en een geldige handtekening. Laten we u een voorbeeld laten zien van de hoofdklasse die er ongeveer zo uit zou zien:

Openbare statische hoofdruimte (String [])

Ten slotte roept de bewerking de methode aan door argumenten als Bart, pijlen en Kevin in te voeren in de vorm van de tekenreeks [].

PS: als je last hebt van problemen zoals kon de virtuele Java-machine niet maken, klik om ze nu te repareren.

De redenen achter de hoofdklasse worden niet gevonden fout

Wanneer u een foutmelding krijgt als 'kon de hoofdklasse niet vinden of laden', betekent dit dat terwijl u de Java-bewerking probeerde uit te voeren, de eerste stap is mislukt. De Java-engine kan de klasse niet vinden om deze uit te voeren. De java-opdracht kon de klasse in de directory niet vinden.

In bepaalde gevallen moet u de Java-terminal inschakelen om de juiste locatie te vinden door het juiste bestandspad toe te voegen. De computer kan de klasse of locatie mogelijk niet vinden omdat u de opdrachtregelterminal gebruikt om de opdracht uit te voeren. Dit probleem doet zich niet voor bij de beoogde IDE's omdat de IDE een aanwijzer gebruikt om naar de map te wijzen die momenteel werkt.

Oplossingen om de belangrijkste klassefout aan te pakken

Net zoals er veel redenen zijn die de fout 'kan hoofdklasse niet vinden of laden' veroorzaken, zijn er veel oplossingen om daarmee om te gaan. Het is duidelijk dat de fout die we overwegen totaal niets te maken heeft met een fout in het systeem. Het wordt meestal door de gebruiker gegenereerd, omdat we de scenario's hebben gezien die zich zouden kunnen voordoen. In dit deel geven we u de beste methoden waarmee u de fout met een paar eenvoudige stappen kunt oplossen.

1. Controle van het argument van de klassenaam

Een van de meest voorkomende fouten die gebruikers maken, is tijdens het invoeren van de klassenaam in het argumentvak. Of ze voeren de verkeerde klassenaam in of voeren het verkeerde formulier in, zelfs als ze de juiste klassenaam invoeren. In beide gevallen is de fout onvermijdelijk. Terwijl we de parameters in de opdrachtregel instellen, zullen we het geval overwegen dat de gebruiker het argument van de klassenaam in de verkeerde vorm invoert.

Nu zullen we alle vergelijkbare scenario's en fouten vermelden die de gebruikers kunnen maken.

  • De eerste fout die kan optreden is tijdens het invoeren van de eenvoudige klassenaam. Wanneer u de naam van de klas declareert in een pakket als 'cm.acme.voorbeeld, 'dan moet je voorzichtig zijn bij het invoeren van de volledige klassenaam in het Java-commando samen met het pakket.

Enter - java com.acme.example.ListAppuals

In plaats van

Java-lijstAppuals

  • Zorg ervoor dat u de padnaam of bestandsnaam en niet opgeeft verklaar de klassenaam in plaats daarvan, wat de betere optie is. Sommige van de verkeerd items die gemaakt kunnen worden zien er als volgt uit:

Java-lijstAppuals.class

Java com / acme / example / ListAppuals.class

  • Je moet altijd attent zijn op de omhulsel in de commando's. De Java-opdrachten van programma's zijn zeer hoofdlettergevoelig. Het hele doel zal fout gaan als u in het verkeerde geval zelfs maar één enkele letter invoert. Het resultaat is de fout 'kon hoofdklasse niet vinden of laden'. Ieder onjuiste opdracht met een fout in het geval zou er als volgt uitzien

Java com.acme.example.listappuals

  • Het is belangrijk dat jij moet vermijden het verklaren van de bron bestandsnaam. Zoals we eerder hebben vermeld, hoeft u alleen maar voorzichtig te zijn met het declareren van de klasse in het juiste formaat met de volledige klassenaam. De fout kan er als volgt uitzien:

java ListAppuals.java

  • De laatste reden voor de fout met betrekking tot de klassenaam kan zijn wanneer u een type of gebruikt kan gewoon overslaan om de klassenaam volledig te schrijven.

Als je een dergelijke slordige fout maakt, of het nu een van de bovenstaande is, controleer ze dan en verwijder ze. Daarna kunt u opnieuw proberen het programma uit te voeren en kijken of de fout 'kan de hoofdklasse niet vinden of laden' opnieuw optreedt.

2. Controleer het klassenpad om 'Kan hoofdklasse niet vinden of laden' op te lossen

Als u nu alles wat we in de bovenstaande methode noemden, bekeek en corrigeerde en nog steeds dezelfde fout tegenkomt, dan was dat waarschijnlijk een andere reden die u verontrustte. Misschien kon de java-opdracht de geverifieerde klassenaam niet vinden in het pad. Hierdoor kan de Java-runtime zoeken naar klassenbestanden en bronnen daarin. Het instellen van een klassenpad is eenvoudig en u kunt hetzelfde op twee verschillende manieren doen door afzonderlijke opdrachten in te voeren.

Deze opdrachten zijn:

C:> sdkTool –classpath classpath1; classpath2…

C:> set CLASSPATH = classpath1; classpath2…

U kunt meer lezen over classpath instellen or Java-opdrachtdocumentatie om meer kennis op te doen over het klassenpad.

3. Controleer de map om te repareren "Kon hoofdklasse niet vinden of laden"

Het is belangrijk om te onthouden dat wanneer we een directory voor het classpath declareren, de naamruimte en de root altijd met elkaar corresponderen. Laten we een voorbeeld nemen; als je "/ usr / local / acme / classes"In het klassenpad, het java-commando zoekt naar de klasse"com.acme.voorbeeld.Appuals'.

Het java-commando zal een zoekopdracht uitvoeren naar de volgende klasse en padnaam:

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

Aan de andere kant, als u een ander adres zoals het onderstaande in het klassenpad invoert, zal Java de juiste klasse niet vinden:

/ usr / local / acme / classes / com / acme / voorbeeld

Een ander ding om voor te zorgen is de subdirectory. U moet controleren of het vergelijkbaar is met de FQN. Als de FN van je klas "com.acme.example.Appuals" is, zal de java-opdracht proberen te zoeken naar de "Appuals. Klasse" in de "com / acme / voorbeeld"Map.

We zullen u enkele voorbeelden geven door enkele scenario's op te nemen:

  • De klasse die u probeert te starten is: com.acme.example.Appuals
  • Het volledig bestandspad naam is: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Het huidige werkmap naam is: / usr / local / acme / classes / com / acme / example /

Deze scenario's zien er als volgt uit:

# fout, FQN is nodig

java-appuals

# fout, er is geen 'com / acme / voorbeeld' map in de huidige werkmap

java com.acme.voorbeeld.Appuals

# verkeerd, vergelijkbaar met het bovenstaande scenario

java - klassenpad. com.acme.example.Appuals

# OK: er is een relatief klassenpad ingesteld

java –classpath ../../ .. come.acme.example.Appuals

# OK: er is een absoluut klassenpad ingesteld

java –classpath / usr / local / acme / classes com.acme.example.Appuals

Een ding om op te merken is dat tijdens het invoeren van het klassenpad, je ook elke andere klasse (niet-systeem) moet invoeren die de applicatie nodig heeft.

4. Controleer het klassenpakket om te repareren "Kon hoofdklasse niet vinden of laden"

Als de oplossingen die we hierboven hebben gegeven nuttig zijn gebleken in de situatie waarmee u wordt geconfronteerd, moet u voor een aantal andere zaken zorgen. U moet controleren of u de broncode in de juiste map heeft geplaatst. Een ander ding om te controleren is dat de pakket verklaard door u is juist. Als u de code samen met een IDA probeert uit te voeren, wordt u waarschijnlijk geïnformeerd over het probleem en alle relevante informatie.

In het geval dat we overwegen, gebruiken we de opdrachtprompt. Het maakt kans dat u de fout niet zult opmerken, en de fout 'kan de hoofdklasse niet vinden of laden' is het resultaat.

Conclusie over hoe te repareren Kan hoofdklasse niet vinden of laden

Dit waren alle fouten die u kunt vermijden of verwijderen om de fout te verwijderen 'kon hoofdklasse niet vinden of laden. ' Doorloop de programma's die u hebt geschreven grondig, identificeer de fouten en pas de juiste oplossing toe.

Avatar van Jack

Jack

Tien jaar ervaring in informatie- en computertechnologie. Gepassioneerd door elektronische apparaten, smartphones, computers en moderne technologie.