Fix: Kunne ikke finde eller indlæse hovedklasse

Fejlen ' Kunne ikke finde eller indlæse hovedklasse ' opstår, når du bruger en java-kommando i kommandoprompten til at starte et Java-program ved at angive klassens navn i terminalen. Årsagen til, at dette sker, skyldes for det meste brugerens programmeringsfejl, mens han erklærede klassen.

Kunne ikke finde eller indlæse hovedklassen i Java-kommandolinjen

Som nævnt før er denne fejl for det meste ikke relateret til systemet, og brugeren laver en fejl i flere scenarier som vist nedenfor. Før vi går videre, antager vi, at du har en grundlæggende viden om Java-programmeringssprog, og hvordan det fungerer.

Hvad forårsager fejlen 'Kunne ikke finde eller indlæse hovedklasse' i Java?

Meddelelsen 'Kunne ikke finde eller indlæse hovedklasse' betyder, at det første trin i Java-motoren, der henter klassen til udførelse, mislykkedes. Den java-kommandoen var ikke i stand til at lokalisere den klasse på den rigtige mappe.

I nogle tilfælde skal du tilføje den korrekte filsti og pege Java-terminalen til den rigtige placering. Da du udfører kommandoen fra kommandolinjeterminalen, ved computeren ikke, hvor klassen skal findes, eller hvor den er placeret. I målrettede IDE'er er dette ikke problemet, da IDE holder en markør, der peger mod den aktuelle arbejdsmappe.

Hvad er 'java' syntaks?

Før vi begynder at fejlfinde, hvorfor terminalen returnerer en fejl, når vi prøver at udføre, skal vi først se på syntaks for kommandoen. Hvis du ikke bruger den korrekte syntaks, vil du uundgåeligt stå over for denne fejl.

Den normale syntaks for kommandoen er noget som dette:

 java [...] [...]

Her er en kommandolinjemulighed, er et fuldt kvalificeret Java-klassenavn og er et kommandolinjeargument, der sendes til din applikation, når hele pakken er kompileret.

Et eksempel på en gyldig kommando er:

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

Ovenstående kommando får java-kommandoen til at udføre følgende operationer:

  • Det søger efter en samlet version af klassen ' com.acme.example.ListAppuals '.
  • Efter søgning indlæses klassen.
  • Derefter, når klassen er indlæst, vil klassen blive søgt efter en 'hoved' metode med en gyldig signatur, modifikatorer og returtype. Et eksempel på en hovedklasse ville være som:
offentlig statisk ugyldig hoved (String [])
  • Metoden kaldes med argumenterne 'kevin', 'pile' og 'bart' som streng [].

Sådan løses 'Kunne ikke finde eller indlæse hovedklasse'

Løsning 1: Kontrol af klassens navnargument

Den mest almindelige fejl, som brugere laver, er at de angiver et forkert klassenavn som et argument (eller et korrekt klassenavn er en forkert form). Da vi erklærer parametre på kommandolinjen, er det meget sandsynligt, at du vil overføre klassens navnargument i en forkert form. Her viser vi alle mulige scenarier, hvor du kan lave en fejl.

  • Skrivning af et enkelt klassenavn . Hvis du erklærer klassen i en pakke som 'com.acme.example', skal du bruge det fulde klassenavn inklusive pakken i Java-kommandoen.
java com.acme.example.ListAppuals

i stedet for

java ListAppuals
  • Du skal erklære et klassenavn i stedet for at erklære et filnavn eller stienavn. Java henter ikke klassen, hvis du erklærer et sti / filnavn for det. Forkerte poster inkluderer følgende:
java ListAppuals.class java com / acme / eksempel / ListAppuals.class
  • Huset skal tages i betragtning. Java-kommandoer er store og små bogstaver, og hvis du laver en fejl med et enkelt bogstav, kan du ikke indlæse hovedklassen. Et eksempel på forkerte fejl er:
java com.acme.example.listappuals
  • Du bør ikke erklære et kildefilnavn . Som nævnt før behøver du kun at erklære klassen i det korrekte fulde klassenavnsformat. Eksempel på en fejl er:
java ListAppuals.java
  • Denne fejl opstår også, hvis du laver en typefejl eller glemmer at skrive klassens navn helt .

Hvis du har lavet sjusket fejl ved at erklære klassenavnet, skal du sørge for at rette det og derefter prøve at starte programmet.

Løsning 2: Kontrol af klassesti

Hvis du har erklæret klassenavnet korrekt, men stadig får vist fejlen, er chancerne for, at java-kommandoen ikke kunne finde det angivne klassenavn på stien. Klassestien er en sti, hvor Java runtime søger efter ressource- og klassefiler. Du kan nemt indstille klassestien ved hjælp af to forskellige kommandoer som vist nedenfor:

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

For at få mere indsigt i klassestien skal du tjekke følgende dokumenter.

Java-kommandodokumentation

Indstiller klassesti

Løsning 3: Kontrol af bibliotek

Når du erklærer en mappe som en klassesti, svarer den altid til roden til navneområdet. For eksempel, hvis "/ usr / local / acme / classes" er på klassestien, vil Java søge efter klassen "com.acme.example.Appuals". Det vil se efter en klasse med følgende stinavn:

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

Så hvis du sætter følgende adresse i klassestien, kan Java ikke finde klassen:

/ usr / local / acme / classes / com / acme / eksempel

Du skal også kontrollere din underkatalog og se, om den matcher FQN. Hvis dine klasser FQN er "com.acme.example.Appuals", så søger Java efter en "Appuals.class" i biblioteket "com / acme / eksempel".

Lad os antage følgende scenarie for at give dig et eksempel:

  • Den klasse, du vil køre, er: com.acme.example.Appuals
  • Den fulde filsti er: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Den aktuelle arbejdsmappe er: / usr / local / acme / classes / com / acme / example /

Derefter ville følgende scenarier holde:

# forkert, FQN er nødvendig java Appuals # forkert, der er ingen `com / acme / eksempel`-mappe i den aktuelle arbejdsmappe java com.acme.example.Appuals # forkert, svarende til ovenstående scenarie java -classpath. com.acme.example.Appuals # OK; en relativ klassebane er indstillet java -classpath ../../ .. com.acme.example.Appuals # OK; en absolut klassebane er indstillet java -classpath / usr / local / acme / classes com.acme.example.Appuals

Bemærk: Klassestien skal også omfatte alle de andre klasser (ikke-system), som dine applikationer har brug for.

Løsning 4: Kontrol af klassepakke

Hvis alle ovenstående løsninger gælder i dit tilfælde, skal du sørge for, at din kildekode er placeret i den korrekte mappe. Du har også korrekt erklæret pakken . Hvis du kører din kode med en IDE, vil den sandsynligvis informere dig om problemet. Men i vores tilfælde, da vi kører det i kommandoprompten, vil fejlen gå ubemærket hen, og du får klassefejlen under diskussion.

Anbefalet

Fix: Minecraft svarer ikke
Hvad er applikation til registrering af digital tv-tuner-enhed, og skal den fjernes?
Hvad er FileRepMalware, og skal du fjerne det