Fix: Kunne ikke finne eller laste inn hovedklassen

Feilen ' Kunne ikke finne eller laste hovedklasse ' 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 for det meste brukerens programmeringsfeil mens han erklærte klassen.

Kunne ikke finne eller laste inn hovedklassen i Java-kommandolinjen

Som nevnt før, er denne feilen stort sett ikke relatert til systemet, og brukeren gjør en feil i flere scenarier som vist nedenfor. Før du 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øring mislyktes. Den java-kommandoen var ikke i stand til å finne den klassen på riktig katalog.

I noen tilfeller må du legge til riktig filbane og peke Java-terminalen til riktig sted. 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, da IDE holder en peker som peker mot gjeldende arbeidskatalog.

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, blir klassen søkt etter en "hoved" -metode med 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 inn hovedklasse'

Løsning 1: Kontrollerer argumentet for klassenavn

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.

  • Skriver et enkelt kursnavn . Hvis du erklærer klassen i en pakke som "com.acme.example", må du bruke hele klassenavnet inkludert pakken i Java-kommandoen.
java com.acme.example.ListAppuals

i stedet for

java ListAppuals
  • Du bør 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. Feil oppføringer inkluderer følgende:
java ListAppuals.class java com / acme / eksempel / ListAppuals.class
  • Deksel 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 bør ikke erklære et kildefilnavn . 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 gjør en skrivefeil eller glemmer å skrive kursnavnet helt .

Hvis du har gjort noen slurvete feil ved å erklære klassenavnet, må du sørge for å 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 angitte 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 en klasse "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 underkatalogen din og se om den 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
  • Hele filbanen er: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Den nåværende arbeidskatalogen er: / usr / local / acme / classes / com / acme / example /

Så vil følgende scenarier gjelde:

# feil, FQN er nødvendig java Appuals # feil, det er ingen `com / acme / eksempel`-mappe i den nåværende arbeidskatalogen java com.acme.example.Appuals # feil, ligner på scenariet ovenfor java -classpath. 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 stemmer i ditt tilfelle, må du sørge for at kildekoden din er plassert i riktig mappe. Du har også erklært pakken riktig . 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.

Anbefalt

Fix: Minecraft svarer ikke
Hva er Digital TV Tuner Device Application Application og bør det fjernes?
Hva er FileRepMalware og bør du fjerne det