Fix: Kunne ikke finne eller laste inn hovedklassen



Prøv Instrumentet Vårt For Å Eliminere Problemer

Feilen ' Kunne ikke finne eller laste inn hovedklassen ’Oppstår når du bruker en java-kommando i ledeteksten for å starte et Java-program ved å spesifisere klassenavnet i terminalen. Årsaken til at dette skjer, skyldes hovedsakelig brukerens programmeringsfeil mens han erklærte klassen.



Kunne ikke finne eller laste inn hovedklassen i Java-kommandolinjen

Kunne ikke finne eller laste hovedklasse - Java-kommandolinje



Som nevnt tidligere, er denne feilen stort sett ikke relatert til systemet, og brukeren gjør en feil i flere scenarier som vist nedenfor. Før vi går videre antar vi at du har grunnleggende kunnskaper om Java-programmeringsspråk og hvordan det fungerer.



Hva forårsaker feilen 'Kunne ikke finne eller laste hovedklasse' i Java?

Meldingen 'Kunne ikke finne eller laste inn hovedklasse' betyr at det første trinnet i Java-motoren som henter klassen for utførelse mislyktes. De java-kommando var ikke i stand til Lokaliser klassen i riktig katalog.

I noen tilfeller må du legge til riktig filsti og pek Java-terminalen til riktig plassering. Siden du utfører kommandoen fra kommandolinjeterminalen, vet ikke datamaskinen hvor klassen skal finnes eller hvor den ligger. I målrettede IDE-er er dette ikke problemet ettersom IDE holder en pekepekende mot den nåværende arbeidskatalogen.

Hva er ‘java’ -syntaks?

Før vi begynner å feilsøke hvorfor terminalen gir oss en feil når vi prøver å utføre, må vi først se på syntaksen til kommandoen. Hvis du ikke bruker riktig syntaks, vil du uunngåelig møte denne feilen.



Den normale syntaksen til kommandoen er omtrent slik:

java [...] [...]

Her er et kommandolinjealternativ, er et fullt kvalifisert Java-klassenavn, og er et kommandolinjeargument som sendes til applikasjonen din når hele pakken er kompilert.

Et eksempel på en gyldig kommando er:

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

Ovennevnte kommando vil få java-kommandoen til å utføre følgende operasjoner:

  • Den vil søke etter en samlet versjon av klassen ‘ com.acme.example.ListAppuals '.
  • Etter søking vil den laste klassen.
  • Deretter, når klassen er lastet, vil klassen bli søkt etter en “hoved” -metode med en gyldig signatur, modifikatorer og returtype. Et eksempel på en hovedklasse vil være omtrent:
public static void main (String [])
  • Metoden vil bli kalt med argumentene ‘kevin’, ‘piler’ og ‘bart’ som streng [].

Slik løser du 'Kunne ikke finne eller laste hovedklasse'

Løsning 1: Kontrollerer klassenavnargument

Den vanligste feilen brukerne gjør er at de oppgir feil klassenavn som argument (eller et riktig klassenavn er feil skjema). Siden vi erklærer parametere på kommandolinjen, er det høyst sannsynlig at du vil overføre klassenavnargumentet i feil form. Her vil vi liste opp alle mulige scenarier der du kan gjøre en feil.

  • Skrive en enkelt klassenavn . Hvis du erklærer klassen i en pakke som ‘com.acme.example’, må du bruke fullt klassenavn inkludert pakken i Java-kommandoen.
java com.acme.example.ListAppuals

i stedet for

java ListAppuals
  • Du burde erklære et klassenavn i stedet for å erklære et filnavn eller stienavn. Java henter ikke klassen hvis du erklærer et sti / filnavn for det. stemmer ikke oppføringene inkluderer følgende:
java ListAppuals.class java com / acme / eksempel / ListAppuals.class
  • Foringsrør bør tas i betraktning. Java-kommandoer er store og små bokstaver, og hvis du tar feil med en bokstav, vil du ikke kunne laste hovedklassen. Et eksempel på feil feil er:
java com.acme.example.listappuals
  • Du burde ikke erklære til kildens filnavn . Som nevnt før, trenger du bare å erklære klassen i riktig fullstendig klassenavnsformat. Eksempel på feil er:
java ListAppuals.java
  • Denne feilen vil også oppstå hvis du lager en skrivefeil eller glem å skrive kursnavnet helt .

Hvis du har gjort noen slurvete feil med å erklære klassenavnet, må du fikse det og prøve å starte programmet.

Løsning 2: Sjekke klassesti

Hvis du har erklært klassenavnet riktig, men fremdeles vises feilen, er sjansen stor for at java-kommandoen ikke kunne finne det spesifiserte klassenavnet på banen. Klassestien er en bane der Java kjøretid søker etter ressurs- og klassefiler. Du kan enkelt angi klassestien ved hjelp av to forskjellige kommandoer som vist nedenfor:

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

For å få mer innsikt i klassestien, bør du sjekke ut følgende dokumenter.

Java kommandodokumentasjon

Setter kursvei

Løsning 3: Kontrollerer katalogen

Når du erklærer en katalog som en klassebane, vil den alltid tilsvare roten til navneområdet. For eksempel hvis '/ usr / local / acme / classes' er på klassestien, vil Java søke etter klassen 'com.acme.example.Appuals'. Det vil se etter en klasse med følgende banenavn:

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

Så hvis du legger inn følgende adresse i klassestien, vil Java ikke kunne finne klassen:

/ usr / lokal / acme / klasser / com / acme / eksempel

Du bør også sjekke din underkatalog og se om det samsvarer med FQN. Hvis klassene FQN er 'com.acme.example.Appuals', vil Java søke etter en 'Appuals.class' i katalogen 'com / acme / example'.

La oss anta følgende scenario for å gi deg et eksempel:

  • Klassen du vil kjøre er: com.acme.example.Appuals
  • De full filbane er: /usr/local/acme/classes/com/acme/example/Appuals.class
  • De gjeldende arbeidskatalog er: / usr / lokal / acme / klasser / com / acme / eksempel /

Så ville følgende scenarier gjelde:

# feil, FQN er nødvendig java Appuals # feil, det er ingen `com / acme / eksempel`-mappe i gjeldende arbeidskatalog java com.acme.example.Appuals # feil, ligner på scenariet java -classpath ovenfor. com.acme.example.Appuals # OK; en relativ klassebane er satt java -classpath ../../ .. com.acme.example.Appuals # OK; en absolutt klassebane er satt java -classpath / usr / local / acme / classes com.acme.example.Appuals

Merk: Klassestien må også inkludere alle de andre klassene (ikke-systemet) som applikasjonene dine trenger.

Løsning 4: Kontrollerer klassepakken

Hvis alle løsningene ovenfor gjelder i ditt tilfelle, må du sørge for at kildekoden din er plassert i riktig mappe. Du har også korrekt erklært pakke . Hvis du kjører koden din med en IDE, vil den sannsynligvis informere deg om problemet. Imidlertid, i vårt tilfelle, siden vi kjører den i ledeteksten, vil feilen gå ubemerket, og du vil få klassefeilen under diskusjon.

4 minutter lest