Fix: Kunne ikke finde eller indlæse hovedklasse



Prøv Vores Instrument Til At Fjerne Problemer

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 under erklæringen af ​​klassen.



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

Kunne ikke finde eller indlæse hovedklasse-Java-kommandolinje



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. Det java-kommando ikke var i stand til find klassen i det rigtige bibliotek.

I nogle tilfælde skal du tilføje korrekt filsti og peg 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 fejle, hvorfor terminalen returnerer en fejl, når vi prøver at udføre, skal vi først se på syntaxen 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:

  • Den vil søge 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 argument for klassenavn

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 videregive klassens navnargument i en forkert form. Her vil vi liste alle mulige scenarier, hvor du kan lave en fejl.

  • Skrivning af en simpelt holdnavn . Hvis du erklærer klassen i en pakke som f.eks. “Com.acme.example”, skal du bruge fuldt klassenavn inklusive pakken i Java-kommandoen.
java com.acme.example.ListAppuals

i stedet for

java ListAppuals
  • Du burde 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. Ukorrekt poster inkluderer følgende:
java ListAppuals.class java com / acme / eksempel / ListAppuals.class
  • Kabinet bør 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 burde ikke erklære til kildens filnavn . 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 skrivefejl eller glem at skrive holdets navn helt .

Hvis du har lavet sjusket fejl med 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 en klasse '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 bør også kontrollere din underkatalog og se om det matcher FQN. Hvis dine klasser FQN er 'com.acme.example.Appuals', vil Java søge 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
  • Det fuld filsti er: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Det nuværende arbejdsmappe er: / usr / lokal / acme / klasser / com / acme / eksempel /

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 klassesti 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 ovennævnte 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 pakke . 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 kommandoprompt, vil fejlen gå ubemærket hen, og du får klassefejlen under diskussion.

4 minutter læst