Поправка: Није могуће пронаћи или учитати главну класу

Грешка „ Не могу пронаћи или учитати главну класу “ се јавља када се у командној линији користи Јава наредба за покретање Јава програма наводећи име класе у терминалу. Разлог зашто се то дешава је углавном због програмске грешке корисника приликом декларисања класе.

Не могу да пронађем или учитам главну класу у Јава командној линији

Као што је раније поменуто, ова грешка углавном није повезана са системом и корисник погреши у неколико сценарија као што је приказано у наставку. Пре него што кренемо напред, претпостављамо да имате основно знање о програмском језику Јава и како он функционише.

Шта узрокује грешку „Не могу пронаћи или учитати главну класу“ на Јави?

Порука „Не могу пронаћи или учитати главну класу“ значи да први корак Јава механизма за преузимање класе за извршење није успео. Команда јава није успела да пронађе класу у исправном директоријуму.

У неким случајевима морате додати исправну путању датотеке и усмерити Јава терминал на тачну локацију. Будући да извршавате наредбу са терминала командне линије, рачунар не зна где се класа може наћи или где се налази. У циљаним ИДЕ-има то није проблем јер ИДЕ задржава показивач који показује према тренутном радном директоријуму.

Шта је синтакса „јава“?

Пре него што започнемо решавање проблема зашто нам терминал враћа грешку приликом покушаја извршавања, прво морамо погледати синтаксу наредбе. Ако не користите тачну синтаксу, неизбежно ћете се суочити са овом грешком.

Уобичајена синтакса наредбе је отприлике овако:

 јава [...] [...]

Овде је опција командне линије, потпуно је квалификовано име класе Јава и аргумент је командне линије који се преноси вашој апликацији када се компајлира цео пакет.

Пример важеће наредбе је:

јава -Ксмк100м цом.ацме.екампле.ЛистАппуалс кевин стрелице барт

Горња наредба учиниће да јава наредба изврши следеће операције:

  • Тражиће компајлирану верзију класе ' цом.ацме.екампле.ЛистАппуалс '.
  • Након претраживања учитаће класу.
  • Даље, када се класа учита, класа ће се тражити 'главна' метода са важећим потписом, модификаторима и типом повратка. Узорак главне класе био би нешто попут:
јавна статичка воид главна (Стринг [])
  • Метода ће бити позвана са аргументима 'кевин', 'стрелице' и 'барт' као стринг [].

Како поправити „Није могуће пронаћи или учитати главну класу“

Решење 1: Провера аргумента имена класе

Најчешћа грешка коју корисници чине је да као аргумент дају погрешно име класе (или је тачно име класе погрешан облик). Будући да декларишемо параметре у командној линији, велика је вероватноћа да ћете аргумент класе имена проследити у погрешном облику. Овде ћемо навести све могуће сценарије у којима можете погрешити.

  • Писање једноставног назива класе . Ако класу пријавите у пакету као што је 'цом.ацме.екампле', морате користити пуно име класе, укључујући пакет у наредби Јава.
јава цом.ацме.екампле.ЛистАппуалс

уместо

јава ЛистАппуалс
  • Требали бисте прогласити име класе уместо да декларишете име датотеке или путању. Јава не преузима класу ако за њу пријавите име путање / име датотеке. Нетачни уноси укључују следеће:
јава ЛистАппуалс.цласс јава цом / ацме / екампле / ЛистАппуалс.цласс
  • Треба узети у обзир кућиште . Јава наредбе разликују велика и мала слова и ако погрешите чак једно слово, нећете моћи учитати главну класу. Пример нетачних грешака су:
јава цом.ацме.екампле.листаппуалс
  • Не бисте требали декларирати изворно име датотеке . Као што је већ поменуто, класу морате пријавити само у исправном формату пуног назива класе. Пример грешке је:
јава ЛистАппуалс.јава
  • До ове грешке ће доћи и ако погрешите при куцању или заборавите да у потпуности напишете име класе .

Ако сте направили било какву траљаву грешку у декларисању назива класе, обавезно га поправите, а затим покушајте да покренете програм.

Решење 2: Провера путање предавања

Ако сте исправно прогласили име класе, али вам се и даље приказује грешка, шанса је да јава наредба није могла пронаћи наведено име класе на путањи. Пут класа је путања на којој Јава рунтиме тражи датотеке ресурса и класе. Путање предавања можете лако поставити помоћу две различите команде као што је приказано доле:

Ц:> сдкТоол -цласспатх цласспатх1; цласспатх2 ... Ц:> сет ЦЛАССПАТХ = цласспатх1; цласспатх2 ...

Да бисте добили бољи увид у пут предавања, требало би да погледате следеће документе.

Јава командна документација

Постављање путање предавања

Решење 3: Провера директоријума

Када декларишете директоријум као пут до класе, он ће увек одговарати корену простора имена. На пример, ако је „/ уср / лоцал / ацме / цлассес“ на путу до класе, тада ће Јава тражити класу „цом.ацме.екампле.Аппуалс“. Тражиће класу са следећим именом путање:

/уср/лоцал/ацме/цлассес/цом/ацме/екампле/Аппуалс.цласс

Дакле, у суштини, ако у пут стазе ставите следећу адресу, Јава неће моћи да пронађе класу:

/ уср / лоцал / ацме / цлассес / цом / ацме / екампле

Такође бисте требали проверити свој поддиректориј и видети да ли се подудара са ФКН-ом. Ако је ФКН ваших класа „цом.ацме.екампле.Аппуалс“, тада ће Јава тражити „Аппуалс.цласс“ у директоријуму „цом / ацме / екампле“.

Да бисмо вам дали пример, претпоставимо следећи сценарио:

  • Класа коју желите да покренете је: цом.ацме.екампле.Аппуалс
  • Путања датотеке пуна је: /уср/лоцал/ацме/цлассес/цом/ацме/екампле/Аппуалс.цласс
  • Тренутни радни директоријум је: / уср / / Ацме / класе / нет / Ацме / примјер /

Тада би важили следећи сценарији:

# погрешно, потребан је ФКН јава Аппуалс # погрешно, у тренутном радном директоријуму не постоји директоријум `цом / ацме / екампле` јава цом.ацме.екампле.Аппуалс # погрешно, слично горњем сценарију јава -цласспатх. цом.ацме.екампле.Аппуалс # ОК; постављена је релативна пут до класе јава -цласспатх ../../ .. цом.ацме.екампле.Аппуалс # ОК; поставља се апсолутна пут до класе јава -цласспатх / уср / лоцал / ацме / цлассес цом.ацме.екампле.Аппуалс

Напомена: Пут предавања такође мора да садржи све остале класе (несистемске) које су потребне вашим апликацијама.

Решење 4: Провера пакета класе

Ако се сва наведена решења у вашем случају испуне тачно, морате да будете сигурни да је ваш изворни код смештен у исправну фасциклу. Такође, правилно сте пријавили пакет . Ако код покренете помоћу ИДЕ-а, вероватно ће вас обавестити о проблему. Међутим, у нашем случају, с обзиром да је покрећемо у командној линији, грешка ће остати непримећена и добићете дискусију о грешци класе.