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

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

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

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

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

Порука "Не могу пронаћи или учитати главну класу" значи да први корак Јава механизма за доношење класе за извршење није успио. Наредба јава није могла лоцирати класу у исправном директорију.

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

Шта је 'јава' синтакса?

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

Нормална синтакса наредбе је овако:

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

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

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

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

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

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

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

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

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

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

уместо

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

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

2. решење: Провера класе

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

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

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

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

Подешавање течаја

3. решење: Провера директорија

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

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

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

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

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

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

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

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

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

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

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

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

Занимљиви Чланци