Labojums: Nevarēja atrast vai ielādēt galveno klasi

Kļūda “ Nevar atrast vai ielādēt galveno klasi ” rodas, ja komandu uzvednē tiek izmantota java komanda, lai palaistu Java programmu, terminālā norādot klases nosaukumu. Iemesls, kāpēc tas notiek, galvenokārt ir saistīts ar lietotāja programmēšanas kļūdu, deklarējot klasi.

Java komandrindā nevarēja atrast vai ielādēt galveno klasi

Kā jau minēts iepriekš, šī kļūda lielākoties nav saistīta ar sistēmu, un lietotājs kļūdās vairākos scenārijos, kā parādīts zemāk. Pirms virzāmies uz priekšu, mēs pieņemam, ka jums ir pamatzināšanas par Java programmēšanas valodu un tās darbību.

Kas izraisa kļūdu "Nevarēja atrast vai ielādēt galveno klasi" Java?

Ziņojums “Nevarēja atrast vai ielādēt galveno klasi” nozīmē, ka pirmais Java dzinēja solis, kas ienes klasi izpildei, nav izdevies. Java komanda nespēja atrast klasi pareizajā direktorijā.

Dažos gadījumos jums jāpievieno pareizais faila ceļš un jānorāda Java termināls pareizajā vietā. Tā kā jūs izpildāt komandu no komandrindas termināla, dators nezina, kur klase ir atrodama vai kur tā atrodas. Mērķtiecīgos IDE tas nav problēma, jo IDE saglabā rādītāju, kas norāda uz pašreizējo darba direktoriju.

Kas ir 'java' sintakse?

Pirms sākam traucējummeklēšanu, kāpēc termināls atgriež mums kļūdu, mēģinot izpildīt, vispirms mums jāaplūko komandas sintakse. Ja jūs neizmantojat pareizo sintaksi, jūs neizbēgami saskaraties ar šo kļūdu.

Parastā komandas sintakse ir aptuveni šāda:

 java [...] [...]

Šeit ir komandrindas opcija, tas ir pilnībā kvalificēts Java klases nosaukums un ir komandrindas arguments, kas tiek nodots jūsu lietojumprogrammai, kad tiek apkopota visa pakete.

Derīgas komandas piemērs ir:

java -Xmx100m com.acme.example.ListAppuals kevins bultiņas barts

Iepriekš minētā komanda liks komandai java veikt šādas darbības:

  • Tas meklēs apkopotu klases “ com.acme.example.ListAppuals ” versiju.
  • Pēc meklēšanas tas ielādēs klasi.
  • Pēc tam, kad klase ir ielādēta, klasē tiks meklēta metode “galvenā” ar derīgu parakstu, modifikatoriem un atgriešanās veidu. Galvenās klases paraugs būtu kaut kas līdzīgs:
public static void main (virkne [])
  • Metode tiks izsaukta ar argumentiem 'kevin', 'bultas' un 'bart' kā virkne [].

Kā novērst 'Nevarēja atrast vai ielādēt galveno klasi'

1. risinājums: klases nosaukuma argumenta pārbaude

Lietotāji visbiežāk pieļauj kļūdu, ka viņi kā argumentu norāda nepareizu klases nosaukumu (vai pareizs klases nosaukums ir nepareiza forma). Tā kā mēs komandrindā deklarējam parametrus, ļoti iespējams, ka jūs nodosiet klases nosaukuma argumentu nepareizā formā. Šeit mēs uzskaitīsim visus iespējamos scenārijus, kur jūs varat kļūdīties.

  • Vienkārša klases nosaukuma rakstīšana . Ja deklarējat klasi pakotnē, piemēram, “com.acme.example”, komandā Java jāizmanto pilns klases nosaukums, ieskaitot pakotni.
java com.acme.example.ListAppuals

tā vietā

java ListAppuals
  • Jums vajadzētu deklarēt klases nosaukumu, nevis deklarēt faila vai ceļa nosaukumu. Java neatlasa klasi, ja deklarējat tai ceļu / faila nosaukumu. Nepareizi ieraksti ietver:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Jāņem vērā apvalks . Java komandas ir reģistrjutīgas, un, kļūdoties pat vienā burtā, jūs nevarēsiet ielādēt galveno klasi. Nepareizu kļūdu piemērs ir:
java com.acme.example.listappuals
  • Jums nevajadzētu deklarēt avota faila nosaukumu . Kā jau minēts iepriekš, klase jāpaziņo tikai pareizā pilna nosaukuma formātā. Kļūdas piemērs ir:
java ListAppuals.java
  • Šī kļūda radīsies arī tad, ja izdarīsit drukas kļūdu vai aizmirsīsit pilnībā uzrakstīt klases nosaukumu .

Ja, deklarējot klases nosaukumu, esat pieļāvis nevērīgas kļūdas, pārliecinieties, ka esat to izlabojis, un pēc tam mēģiniet palaist programmu.

2. risinājums: klases ceļa pārbaude

Ja esat pareizi deklarējis klases nosaukumu, bet joprojām tiek parādīta kļūda, iespējams, ka java komanda ceļā nevarēja atrast norādīto klases nosaukumu. Klases ceļš ir ceļš, kurā Java izpildlaiks meklē resursu un klases failus. Jūs varat viegli iestatīt klases ceļu, izmantojot divas dažādas komandas, kā parādīts zemāk:

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

Lai iegūtu vairāk ieskatu par klases ceļu, jums jāpārbauda šie dokumenti.

Java komandu dokumentācija

Klases ceļa iestatīšana

3. risinājums: direktorija pārbaude

Paziņojot direktoriju par klases ceļu, tas vienmēr atbildīs nosaukumvietas saknei. Piemēram, ja “/ usr / local / acme / class” atrodas klases ceļā, tad Java meklēs klasi “com.acme.example.Appuals”. Tā meklēs klasi ar šādu ceļa nosaukumu:

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

Tātad būtībā, ja klases ceļā ievietojat šādu adresi, Java nevarēs atrast klasi:

/ usr / local / acme / class / com / acme / piemērs

Jums vajadzētu arī pārbaudīt savu apakšdirektoriju un noskaidrot, vai tas atbilst FQN. Ja jūsu klases FQN ir “com.acme.example.Appuals”, tad Java meklēs “Appuals.class” direktorijā “com / acme / example”.

Lai sniegtu jums piemēru, pieņemsim šādu scenāriju:

  • Klase, kuru vēlaties vadīt, ir: com.acme.example.Appuals
  • Pilnu faila ceļš ir: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Pašreizējā darba direktoriju ir: / usr / local / Acme / nodarbības / com / Acme / piemērs /

Tad būtu šādi scenāriji:

# nepareizi, ir nepieciešams FQN java Appuals # nepareizi, pašreizējā darba direktorijā java com.acme.example.Appuals # nepareizi, līdzīgi kā iepriekš scenārijā java -classpath, nav mapes `com / acme / example`. com.acme.example.Appuals # OK; relatīvajam klases ceļam ir iestatīts java -classpath ../../ .. com.acme.example.Appuals # OK; absolūtais klases ceļš ir iestatīts java -classpath / usr / local / acme / class com.acme.example.Appuals

Piezīme. Klases ceļā jāiekļauj arī visas citas programmas (ārpus sistēmas), kas nepieciešamas jūsu lietojumprogrammām.

4. risinājums: klases paketes pārbaude

Ja jūsu gadījumā visi iepriekš minētie risinājumi atbilst patiesībai, jums jāpārliecinās, vai avota kods ir ievietots pareizajā mapē. Turklāt jūs esat pareizi deklarējis iepakojumu . Ja palaidīsit kodu ar IDE, tas, iespējams, informēs jūs par šo problēmu. Tomēr mūsu gadījumā, tā kā mēs to izpildām komandrindā, kļūda netiks pamanīta, un jūs saņemsiet apspriežamo klases kļūdu.