Rettelse: 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 specificere klassens navn på terminalen. Årsagen til, at dette sker, skyldes for det meste brugerens programmeringsfejl, mens han erklærer klassen.

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

Som nævnt tidligere er denne fejl for det meste ikke relateret til systemet, og brugeren begår en fejl i flere scenarier som vist nedenfor. Inden vi går videre, antager vi, at du har et grundlæggende kendskab til 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. Java-kommandoen kunne ikke finde klassen i det rigtige bibliotek.

I nogle tilfælde skal du tilføje den rigtige filsti og pege Java-terminalen til det korrekte sted. 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 det aktuelle arbejdsmappe.

Hvad er 'java' syntaks?

Inden vi starter fejlfinding, hvorfor terminalen returnerer os en fejl, når vi prøver at udføre, skal vi først se på syntaxen for kommandoen. Hvis du ikke bruger den rigtige syntaks, vil du uundgåeligt møde denne fejl.

Den normale syntaks af kommandoen er noget i denne retning:

 java [...] [...] 

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

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 kompileret version af klassen ' com.acme.example.ListAppuals '.
  • Efter søgning indlæses klassen.
  • Derefter, når klassen indlæses, søges klassen efter en 'hoved' metode med en gyldig signatur, modifikatorer og returtype. En prøve på hovedklassen ville være noget som:
 public static void main (streng []) 
  • Metoden kaldes med argumenter 'kevin', 'pile' og 'bart' som streng [].

Sådan rettes 'Kunne ikke finde eller indlæse hovedklasse'

Løsning 1: Kontrol af klassens navnargument

Den mest almindelige fejl, som brugerne begår, er, at de giver et forkert klassens navn som et argument (eller et korrekt klassnavn er en forkert form). Da vi erklærer parametre på kommandolinjen, er det meget sandsynligt, at du passerer klassens navnargument i en forkert form. Her viser vi alle mulige scenarier, hvor du kan begå en fejl.

  • Skrivning af et simpelt klassens navn . Hvis du erklærer klassen i en pakke såsom 'com.acme.example', skal du bruge det fulde klassnavn inklusive pakken i Java-kommandoen.
 java com.acme.example.ListAppuals 

i stedet for

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

Hvis du har begået nogen slurvede fejl i at erklære klassens navn, skal du sørge for at rette det og derefter prøve at starte programmet.

Løsning 2: Kontrol af klassespor

Hvis du har erklæret klassens navn korrekt, men stadig vises fejlen, er chancerne for, at java-kommandoen ikke kunne finde det specificerede klassnavn på stien. Klassepaden er en sti, hvor Java-runtime søger efter ressource- og klassefiler. Du kan nemt indstille klassesporet 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 klassesporet skal du tjekke følgende dokumenter.

Java-kommandodokumentation

Indstiller klassespor

Løsning 3: Kontrol af bibliotek

Når du erklærer et bibliotek som en klassepad, vil det altid svare til roden til navneområdet. For eksempel hvis “/ usr / local / acme / Classes” er på klassespaden, vil Java søge efter en klasse “com.acme.example.Appuals”. Det ser efter en klasse med følgende stienavn:

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

Så i det væsentlige, hvis du lægger følgende adresse i klassespaden, vil Java ikke kunne finde klassen:

 / Usr / local / ACME / klasser / dk / Acme / eksempel 

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

For at give dig et eksempel, lad os antage følgende scenario:

  • 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 / eksempel /

Så ville følgende scenarier indeholde:

 # forkert, FQN er nødvendig java Appuals # forkert, der er ingen mappe com / acme / eksempel i den aktuelle arbejdsmappe java com.acme.example.Appuals # forkert, der ligner ovenstående scenarie java -classpath. com.acme.example.Appualer # OK; en relativ klassepad er indstillet java -classpath ../../ .. com.acme.example.Appuals # OK; en absolut klassepad er indstillet java -klassesti / usr / lokal / acme / klasser com.acme.example.Appuals 

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

Løsning 4: Kontrol af klassepakke

Hvis alle ovenstående løsninger stemmer overens i dit tilfælde, skal du sørge for, at din kildekode er placeret i den rigtige mappe. Du har også korrekt angivet pakken . Hvis du kører din kode med en IDE, vil den sandsynligvis informere dig om problemet. I vores tilfælde, da vi kører den i kommandoprompten, vil fejlen imidlertid ikke blive bemærket, og du får klassefejlen under diskussion.

Interessante Artikler