Fix: Det gick inte att hitta eller ladda huvudklassen

Felet " Kunde inte hitta eller ladda huvudklassen " uppstår 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 deklarerade klassen.

Det gick inte att hitta eller ladda huvudklassen i 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. Den java-kommandot kunde inte hitta klassen på 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 'Java' syntax?

Innan vi börjar felsöka varför terminalen ger oss ett fel när vi försöker kö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 fixar du "Det gick inte att hitta eller ladda huvudklassen"

Lösning 1: Kontrollerar klassnamnsargument

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

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

istället för

java ListAppuals
  • Du bör 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. Felaktiga poster inkluderar följande:
java ListAppuals.class java com / acme / exempel / ListAppuals.class
  • Höljet bör beaktas. Java-kommandon är skiftlägeskänsliga och om du gör ett misstag med en bokstav kan du inte ladda huvudklassen. Ett exempel på felaktiga misstag är:
java com.acme.example.listappuals
  • Du bör inte deklarera ett 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ömmer 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 förklarat 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, kommer Java att söka 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 den matchar FQN. Om dina klasser FQN är "com.acme.example.Appuals", söker Java efter en "Appuals.class" i katalogen "com / acme / exempel".

För att ge dig ett exempel, låt oss anta följande scenario:

  • Klassen du vill köra är: com.acme.example.Appuals
  • Den fullständiga filvägen är: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Den aktuella arbetskatalogen är: / usr / local / acme / classes / com / acme / example /

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 klassbana ä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

Obs! 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å korrekt deklarerat paketet . 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.

Rekommenderas

Fix: Minecraft svarar inte
Vad är en ansökan om registrering av digital-TV-mottagare och bör den tas bort?
Vad är FileRepMalware och ska du ta bort det