Fix: Det gick inte att hitta eller ladda huvudklassen



Prova Vårt Instrument För Att Eliminera Problem

Felet ' Det gick inte att hitta eller ladda huvudklassen 'Inträffar när du använder ett java-kommando i kommandotolken för att starta ett Java-program genom att ange klassnamnet i terminalen. Anledningen till att detta händer beror främst på användarens programmeringsfel när han förklarade klassen.



Det gick inte att hitta eller ladda huvudklassen i Java-kommandoraden

Det gick inte att hitta eller ladda huvudklass-Java-kommandoraden



Som nämnts tidigare är detta fel oftast inte relaterat till systemet och användaren gör ett misstag i flera scenarier som visas nedan. Innan vi går vidare antar vi att du har en grundläggande kunskap om Java-programmeringsspråk och hur det fungerar.



Vad orsakar felet ”Kunde inte hitta eller ladda huvudklassen” i Java?

Meddelandet ”Det gick inte att hitta eller ladda huvudklassen” betyder att det första steget i Java-motorn som hämtar klassen för körning misslyckades. De java-kommando kunde inte lokalisera klassen i rätt katalog.

I vissa fall måste du lägga till rätt filsökväg och peka Java-terminalen till rätt plats. Eftersom du kör kommandot från kommandoradsterminalen vet inte datorn var klassen finns eller var den finns. I riktade IDE: er är inte detta problemet eftersom IDE håller en pekare som pekar mot den aktuella arbetskatalogen.

Vad är syntax för java?

Innan vi börjar felsöka varför terminalen returnerar ett fel när vi försöker utföra måste vi först titta på syntaxen för kommandot. Om du inte använder rätt syntax kommer du oundvikligen att möta detta fel.



Den normala syntaxen för kommandot är ungefär så här:

java [...] [...]

Här är ett kommandoradsalternativ, är ett fullt kvalificerat Java-klassnamn och är ett kommandoradsargument som skickas till din applikation när hela paketet kompileras.

Ett exempel på ett giltigt kommando är:

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

Kommandot ovan gör att java-kommandot utför följande operationer:

  • Den söker efter en sammanställd version av klassen ” com.acme.example.ListAppuals '.
  • Efter sökning laddas klassen.
  • Därefter, när klassen laddas, kommer klassen att sökas efter en 'huvud' -metod med en giltig signatur, modifierare och returtyp. Ett exempel på huvudklass skulle vara ungefär som:
public static void main (String [])
  • Metoden kommer att kallas med argumenten 'kevin', 'pilar' och 'bart' som sträng [].

Så här åtgärdar du 'Det gick inte att hitta eller ladda huvudklassen'

Lösning 1: Kontrollerar argument för klassnamn

Det vanligaste misstaget som användarna gör är att de anger fel klassnamn som ett argument (eller ett korrekt klassnamn är fel form). Eftersom vi deklarerar parametrar på kommandoraden är det mycket troligt att du kommer att skicka klassnamnsargumentet i fel form. Här listar vi alla möjliga scenarier där du kan göra ett misstag.

  • Skriva en enkelt klassnamn . Om du förklarar klassen i ett paket som ”com.acme.example” måste du använda fullständigt klassnamn inklusive paketet i Java-kommandot.
java com.acme.example.ListAppuals

istället för

java ListAppuals
  • Du borde förklara ett klassnamn istället för att förklara ett filnamn eller sökväg. Java hämtar inte klassen om du förklarar ett söknamn / filnamn för det. Felaktig poster inkluderar följande:
java ListAppuals.class java com / acme / exempel / ListAppuals.class
  • Hölje bör beaktas. Java-kommandon är skiftlägeskänsliga och om du gör ett misstag med en enda bokstav kommer du inte att kunna ladda huvudklassen. Ett exempel av felaktiga misstag är:
java com.acme.example.listappuals
  • Du borde inte förklara till källfilnamn . Som nämnts tidigare behöver du bara deklarera klassen i rätt fullständigt klassnamnsformat. Exempel på ett misstag är:
java ListAppuals.java
  • Det här felet uppstår också om du gör ett skrivfel eller glöm att skriva klassnamnet helt .

Om du har gjort några slarviga misstag när du förklarar klassnamnet, se till att du fixar det och försök sedan starta programmet.

Lösning 2: Kontrollera klassvägen

Om du har deklarerat klassnamnet korrekt men ändå visar felet är chansen att java-kommandot inte kunde hitta det angivna klassnamnet på sökvägen. Klassstigen är en sökväg där Java-runtime söker efter resurs- och klassfiler. Du kan enkelt ställa in klassvägen med två olika kommandon som visas nedan:

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

För att få mer inblick i klassstigen bör du kolla in följande dokument.

Java-kommandodokumentation

Ange klassstig

Lösning 3: Kontrollerar katalogen

När du förklarar en katalog som en klassväg kommer den alltid att motsvara roten till namnområdet. Till exempel om '/ usr / local / acme / classes' finns på klassvägen, söker Java efter en klass 'com.acme.example.Appuals'. Det kommer att leta efter en klass med följande sökväg:

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

Så i grund och botten, om du lägger till följande adress i klassvägen kommer Java inte att kunna hitta klassen:

/ usr / lokal / acme / klasser / com / acme / exempel

Du bör också kontrollera din underkatalog och se om det matchar FQN. Om dina klasser FQN är 'com.acme.example.Appuals', söker Java efter en 'Appuals.class' i katalogen 'com / acme / exempel'.

Låt oss anta följande scenario:

  • Klassen du vill köra är: com.acme.example.Appuals
  • De fullständig filsökväg är: /usr/local/acme/classes/com/acme/example/Appuals.class
  • De nuvarande arbetskatalog är: / usr / lokal / acme / klasser / com / acme / exempel /

Då skulle följande scenarier gälla:

# fel, FQN behövs java Appuals # fel, det finns ingen `com / acme / exempel`-mapp i den nuvarande arbetskatalogen java com.acme.example.Appuals # fel, liknande ovanstående scenario java -classpath. com.acme.example.Appuals # OK; en relativ klassväg är inställd java -classpath ../../ .. com.acme.example.Appuals # OK; en absolut klassväg är inställd java -classpath / usr / local / acme / classes com.acme.example.Appuals

Notera: Klassstigen måste också inkludera alla andra klasser (icke-system) som dina applikationer behöver.

Lösning 4: Kontrollerar klasspaketet

Om alla ovanstående lösningar gäller i ditt fall måste du se till att din källkod placeras i rätt mapp. Du har också deklarerat korrekt paket . Om du kör din kod med en IDE kommer den antagligen att informera dig om problemet. Men i vårt fall, eftersom vi kör det i kommandotolken kommer felet att bli obemärkt och du kommer att få klassfelet under diskussion.

4 minuter läst