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

Kļūda ' Nevarēju atrast vai ielādēt galveno klasi ' rodas, ja komandu uzvednē izmantojot java komandu, 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.

Nevarēja atrast vai ielādēt galveno klases Java komandrindu

Tāpat kā minēts iepriekš, šī kļūda lielākoties nav saistīta ar sistēmu, un lietotājs pieļauj kļūdu vairākos scenārijos, kā parādīts zemāk. Pirms virzīties 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ēju atrast vai ielādēt galveno klasi” Java?

Ziņojums “Nevarēju atrast vai ielādēt galveno klasi” nozīmē, ka pirmais Java dzinēja solis, kas atvelk 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ālis pareizajā vietā. Tā kā jūs izpildāt komandu no komandrindas termināļa, dators nezina, kur jāatrod klase vai kur tā atrodas. Mērķtiecīgos IDE tā 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 problēmu novēršanu, kāpēc terminālis atgriež mums kļūdu, mēģinot izpildīt, vispirms mums ir jāizskata komandas sintakse. Ja nelietojat pareizu sintakse, neizbēgami saskarsities ar šo kļūdu.

Parastā komandas sintakse ir kaut kas līdzīgs šim:

 java [...] [...] 

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

Derīgas komandas piemērs ir:

 java -Xmx100m com.acme.example.ListAppuals Kevina bultas 

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

  • Tajā tiks meklēta klases “ com.acme.example.ListAppuals ” apkopota versija.
  • Pēc meklēšanas tas ielādēs nodarbību.
  • Pēc tam, kad klase tiek ielādēta, klasē tiks meklēta “galvenā” metode ar derīgu parakstu, modifikatoriem un atgriešanas veidu. Galvenās klases paraugs būtu kaut kas līdzīgs:
 publiski statiskā tukšā galvenā (stīga []) 
  • Metode tiks izsaukta ar argumentiem 'kevin', 'bultiņām' un 'bart' kā virkni [].

Kā salabot 'Nevarēju atrast vai ielādēt galveno klasi'

1. risinājums: pārbaudiet klases nosaukuma argumentu

Visizplatītākā lietotāju pieļautā kļūda ir tā, ka viņi kā argumentu norāda nepareizu klases nosaukumu (vai pareizs klases nosaukums ir nepareiza forma). Tā kā komandrindā mēs deklarējam parametrus, ļoti iespējams, ka klases nosaukuma arguments tiks nodots nepareizā formā. Šeit mēs uzskaitīsim visus iespējamos scenārijus, kuros varat kļūdīties.

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

tā vietā

 java ListAppuals 
  • Jums vajadzētu deklarēt klases nosaukumu, nevis deklarēt faila vai ceļa vārdu . Java neielādē klasi, ja jūs paziņojat tās ceļu / faila nosaukumu. Nepareizi ieraksti ir šādi:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • Jāņem vērā apvalks . Java komandas ir reģistrjutīgas, un, ja pieļaujat kļūdu pat vienā burtā, galveno klasi nevarēsit ielādēt. Nepareizu kļūdu piemērs:
 java com.acme.example.listappuals 
  • Jums nevajadzētu deklarēt avota faila nosaukumu . Tāpat kā minēts iepriekš, klase jādeklarē tikai pareizajā pilna nosaukuma formātā. Kļūdas piemērs:
 java ListAppuals.java 
  • Šī kļūda rodas arī tad, ja pieļaujat drukas kļūdu vai aizmirstat pilnībā uzrakstīt klases nosaukumu .

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

2. risinājums: pārbaudiet klases ceļu

Ja esat pareizi deklarējis klases nosaukumu, bet joprojām tiek parādīta kļūda, iespējams, java komanda ceļā nevarēja atrast norādīto klases nosaukumu. Klases ceļš ir ceļš, kurā Java izpildlaika 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 plašāku ieskatu par klases ceļu, jums ir jāizlasa šādi dokumenti.

Java komandu dokumentācija

Klases ceļa iestatīšana

3. risinājums: pārbaudiet direktoriju

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

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

Tātad būtībā, ja klasē ievietosit šādu adresi, Java nevarēs atrast klasi:

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

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

Lai sniegtu jums piemēru, pieņemsim, ka šāds scenārijs:

  • Klase, kuru vēlaties vadīt, ir: com.acme.example.Appuals
  • Pilns faila ceļš ir: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Pašreizējais darba direktorijs ir: / usr / local / acme / class / com / acme / example /

Tad būtu šādi scenāriji:

 # nepareiza, nepieciešama FQN java Appuals # nepareiza, pašreizējā darba direktorijā java com.acme.example.Appuals # ir nepareiza mape `com / acme / example`, kas līdzīga iepriekšminētajam scenārijam java -classpath. com.acme.example.Appuals # Labi; ir noteikts relatīvs klases ceļš java -classpath ../../ .. com.acme.example.Appuals # OK; ir iestatīts absolūtais klases ceļš java -classpath / usr / local / acme / class com.acme.example.Appuals 

Piezīme: Classpath jāiekļauj arī visas pārējās klases (nesistēmas), kas nepieciešamas jūsu lietojumprogrammām.

4. risinājums: klases komplekta pārbaude

Ja jūsu gadījumā visi iepriekš minētie risinājumi ir spēkā, jums jāpārliecinās, ka avota kods ir ievietots pareizajā mapē. Arī jūs pareizi deklarējāt paku . Ja savu kodu palaižat, izmantojot IDE, tas, iespējams, informēs jūs par problēmu. Tomēr mūsu gadījumā, tā kā mēs to palaižam komandu uzvednē, kļūda paliks nepamanīta, un jūs saņemsit diskusijas klases kļūdu.

Interesanti Raksti