Kas põhiklassi Java ei leitud ega laaditud? Siin on, kuidas seda parandada!

Kas põhiklassi Java ei leitud ega laaditud? Siin on, kuidas seda parandada!

Kui näete Java -projektis ilmse põhjuseta jätkuvalt põhiklassi viga, siis ärge muretsege, te pole üksi.





Kuna üks JVM -i (Java virtuaalmasin) kalduvustest jääda vaikimisi klassiteele, on üks kõige ettenägematumaid ja spontaansemaid vigu „põhiklassi ei leitud” probleem, mis kummitab nii harrastajaid kui ka professionaale.





Kuid see teema on tegelikult vähem hirmutav kui tundub. Lugege edasi, et teada saada, kuidas sellest veast lõplikult lahti saada.





Miks põhiklassi ei leitud?

Enne kui püüame mõista, kuidas ja miks JVM ei suutnud põhiklassi leida, peame mõistma mõistet Klassitee Java -s.

Mis on Classpath?

Klassitee on failitee, mida Java käituskeskkond otsib klasside ja muude ressursifailide jaoks. Seda saab seadistada kas nupuga -klassitee programmi käivitamisel või süsteemi seadistamisel CLASSPATH keskkonnamuutuja.



Nagu nimigi ütleb, on see lihtsalt failitee, kus .klass faile võib leida JDK paketist või kataloogist.

Kui JVM ei suuda põhiklassi leida, on see sageli sellepärast, et ta otsib vastavat .klass failid valel klassiteel. Loomulikult on selle probleemi lahendamiseks klassitee käsitsi määramine kas pakettide abil või klassitee määramisega.





Kui soovite praegu Java -klasside mälu värskendada, vaadake meie juhendit klasside loomine Java -s .

kui palju autoriõiguste rikkumise teateid ma saan

Pakettide kasutamine

Loome klassi nimega Test . Asetage see pakendisse nimega testPackage . Java -pakette kasutatakse sarnaste klasside rühmitamiseks või klassidele ainulaadse nimeruumi pakkumiseks.





Selles lihtsas näites aitab paketi kasutamine visualiseerida Java klassitee toimimist. Teie failihalduri rakenduses on pakett kujutatud iseseisva kaustana.

package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}

Nüüd avage uus terminal ja veenduge, et teie töökataloog on sama, mis sisaldab pakendikausta. Töökataloogi saate muuta, kasutades CD käsku mis tahes operatsioonisüsteemis.

Koosta Test.java käivitades järgmise käsu:

package testPackage;
javac testPackage/Test.java

See salvestab kompileeritud binaarfaili (.class -faili) testPackage'i.

Kompileeritud klassi käivitamiseks peate käsureale sisestama täielikult kvalifitseeritud klassi nime. Java -klassi täielikult kvalifitseeritud nimi viitab selle nimele, mille ees on paketi nimi. Sel juhul peaks see välja nägema umbes selline:

java testPackage.Test

See klassifailidele helistamise viis tagab ka selle, et saate helistada samast töökataloogist erinevate pakettide käivitatavatele failidele. Kõik, mida pead tegema, on muuta täielikult kvalifitseeritud klassi nime.

Täpsemates rakendustes soovitame teil luua klasside ja lähtefailide jaoks eraldi alamkaustad, et paketis olevaid faile paremini hallata.

Klassitee käsitsi määramine

Soovitatav viis Java -failide haldamiseks on luua eraldi kataloogid lähtefailide ja klasside jaoks. Kui töötate projekti kallal, on tõenäoline, et teete seda juba praegu.

Tavaliselt on lähtefailidega kataloog tähistatud kui src ja see, millel on .class -failid, on märgistatud kui klassid. See on ka võimalus tagada, et tõenäosus, et JVM ei leia põhiklassi, väheneb oluliselt korralikult struktureeritud kataloogi tõttu.

Kui kasutame seda meetodit, näeb kataloogistruktuur enne kompileerimist välja selline:

installige google play Amazon fire'i
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Iga ülaltoodud joonise taane vastab failihierarhia ühele tasandile, mida teie projekt peaks järgima.

Selle kompileerimiseks veenduge, et teie töökataloog on myFolder. Nüüd tippige järgmine käsk:

javac -d classes src/testPackage/Test.java

The .klass käivitatav fail tuleks salvestada myFolder/klassid/testPackage . Seega näeb failikataloogi struktuur välja umbes selline: | _+_ |

Et käivitada .klass faili, käivitage Java käsk täielikult kvalifitseeritud klassi nimega ja määrake kohalik klassitee. Iga tee on deklareeritud töökataloogi suhtes, mis on antud juhul myFolder.

|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class

Selle käsu käivitamine peaks andma teile soovitud väljundi. Kuid miks on lihtsa vea lahendamiseks vaja nii palju ümberkorraldusi?

Failide korraldamise tähtsus Java -s

Põhiklassi „Ei õnnestunud leida ega laadida” põhjus on see, et JVM ei suutnud leida teie asukohta .klass faile hoiti.

Lihtsaim viis selle vea lahendamiseks on kontrollida, kus .class -failid on salvestatud, ja käskida JVM -il selgesõnaliselt seda otsida. See on võimalik, kui korraldate oma lähtefailid ja käivitatavad failid eraldi ning kontrollite kõike töökataloogist.

Kui hakkate lisama selliseid konstruktsioone nagu pärand teie projekti puhul suureneb failisüsteemi keerukus kindlasti mitmekordselt. Sellistes projektides või isegi nendes, kus on vaja kasutada JAR -faile või kohandatud teeke, võib failide eraldamise ja haldamise lihtne tava säästa lugematuid tunde tõrkeotsingut ja silumist.

Kui soovite lugeda lisateavet selle kohta, kuidas klassitee Java -süsteemis töötab, ja arvukatest asjadest, mida saate koodi käivitamisel juhtida, võite vaadata ka Oracle'i üksikasjalik ja kasutajasõbralik viide .

Jaga Jaga Piiksuma E -post 10 parimat algajate projekti uutele programmeerijatele

Kas soovite õppida programmeerimist, kuid ei tea, kust alustada? Need algajad programmeerimisprojektid ja õpetused alustavad teid.

kuidas Facebookis kedagi sildistada
Loe edasi Seotud teemad
  • Programmeerimine
  • Java
Autori kohta Yash Chellani(10 artiklit avaldatud)

Yash on ambitsioonikas informaatikatudeng, kellele meeldib asju ehitada ja kõigest tehnikast kirjutada. Vabal ajal meeldib talle Squashi mängida, lugeda viimast Murakami koopiat ja jahtida Skyrimis draakoneid.

Veel Yash Chellanilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin