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



Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

Kļūda Nevarēja 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

Nevarēja atrast vai ielādēt galveno komandu Java komandu rindu



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 Java kļūdu ‘Nevarēju atrast vai ielādēt galveno klasi’?

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. The java komanda nespēja atrast klase pareizajā direktorijā.

Dažos gadījumos jums jāpievieno pareizais faila ceļš un norādiet Java termināli 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 versiju ‘ com.acme.example.ListAppuals '.
  • 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’, ‘bultiņas’ un ‘bart’ kā virkni [].

Kā novērst problēmu “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.

  • Rakstīšana a vienkāršs klases nosaukums . Ja deklarējat klasi paketē, piemēram, ‘com.acme.example’, jums jāizmanto pilns klases nosaukums ieskaitot pakotni Java komandā.
java com.acme.example.ListAppuals

tā vietā

java ListAppuals
  • Jums vajadzētu paziņot klases nosaukumu tā vietā, lai deklarētu faila vai ceļa nosaukumu. Java neatlasa klasi, ja deklarējat tai ceļu / faila nosaukumu. Nepareizi ierakstos ietilpst:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Apvalks jāņem vērā. Java komandas ir reģistrjutīgas, un, kļūdoties pat vienā burtā, jūs nevarēsiet ielādēt galveno klasi. Piemērs nepareizas kļūdas ir:
java com.acme.example.listappuals
  • Jūs nevajadzētu paziņot avota faila nosaukums . Kā jau minēts iepriekš, klase ir jādeklarē tikai pareizā pilna nosaukuma formātā. Kļūdas piemērs ir:
java ListAppuals.java
  • Šī kļūda rodas arī tad, ja veicat rakstīšanas kļūda vai aizmirst 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šdirektorija un pārbaudiet, 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
  • The pilns faila ceļš ir: /usr/local/acme/classes/com/acme/example/Appuals.class
  • The pašreizējais darba direktorijs ir: / usr / local / acme / class / com / acme / example /

Tad būtu šādi scenāriji:

# nepareizi, ir nepieciešams FQN java Appuals # nepareizi, pašreizējā darba direktorijā java com.acme.example.Appuals # nepareiza, līdzīga iepriekšējam scenārijam java -classpath. com.acme.example.Appuals # OK; relatīvam 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 pārējās klases (ā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 iepakojums . 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.

4 minūtes lasītas