Поправка: Не можах да намеря или заредя основния клас



Опитайте Нашия Инструмент За Премахване На Проблемите

Грешката ' Не можах да намеря или заредя основния клас ’Възниква, когато се използва команда Java в командния ред за стартиране на програма Java чрез посочване на името на класа в терминала. Причината, поради която това се случва, се дължи най-вече на програмната грешка на потребителя при деклариране на класа.



Не можах да намеря или заредя основния клас в командния ред на Java

Не можах да намеря или заредя основния клас - командния ред на Java



Както споменахме по-горе, тази грешка в повечето случаи не е свързана със системата и потребителят прави грешка в няколко сценария, както е показано по-долу. Преди да продължим напред, предполагаме, че имате основни познания за езика за програмиране Java и как работи.



Какво причинява грешката „Не мога да намеря или заредя основния клас“ в Java?

Съобщението ‘Не може да бъде намерен или зареден основен клас’ означава, че първата стъпка от Java механизма, извличащ класа за изпълнение, е неуспешна. The Java команда не беше в състояние намерете класът в правилната директория.

В някои случаи трябва да добавите правилен път на файла и насочете терминала Java към правилното местоположение. Тъй като изпълнявате командата от терминала на командния ред, компютърът не знае къде трябва да бъде намерен класът или къде се намира. В целевите IDE това не е проблемът, тъй като IDE поддържа указател, сочещ към текущата работна директория.

Какво е синтаксис „java“?

Преди да започнем да решаваме защо терминалът ни връща грешка при опит за изпълнение, първо трябва да разгледаме синтаксиса на командата. Ако не използвате правилния синтаксис, неизбежно ще се сблъскате с тази грешка.



Нормалният синтаксис на командата е нещо подобно:

java [...] [...]

Тук има опция за команден ред, е напълно квалифицирано име на клас Java и е аргумент на командния ред, който се предава на вашето приложение, когато целият пакет е компилиран.

Пример за валидна команда е:

java -Xmx100m com.acme.example.ListAppuals кевин стрелки барт

Горната команда ще накара командата java да изпълни следните операции:

  • Той ще търси компилирана версия на класа ‘ com.acme.example.ListAppuals '.
  • След търсене ще зареди класа.
  • След това, когато класът е зареден, класът ще бъде търсен за „основен“ метод с валиден подпис, модификатори и тип връщане. Примерен основен клас ще бъде нещо като:
публична статична void main (String [])
  • Методът ще бъде извикан с аргументи „кевин“, „стрелки“ и „барт“ като низ [].

Как да поправя „Не можах да намеря или заредя основния клас“

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

Най-честата грешка на потребителите е, че те предоставят грешно име на клас като аргумент (или правилното име на класа е грешна форма). Тъй като декларираме параметри в командния ред, е много вероятно да предадете аргумента за името на класа в грешна форма. Тук ще изброим всички възможни сценарии, при които можете да сгрешите.

  • Писане a просто име на класа . Ако декларирате класа в пакет като ‘com.acme.example’, трябва да използвате пълно име на класа включително пакета в командата Java.
java com.acme.example.ListAppuals

вместо

java ListAppuals
  • Ти трябва декларира име на клас вместо да декларира име на файл или име на път. Java не извлича класа, ако декларирате име на път / име на файл за него. Неправилно вписванията включват следното:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Корпус трябва да се вземат под внимание. Java командите са чувствителни към малки и големи букви и ако сгрешите дори една буква, няма да можете да заредите основния клас. Пример за неправилни грешки са:
java com.acme.example.listappuals
  • Ти не трябва декларирам на име на файла източник . Както споменахме по-горе, трябва само да декларирате класа в правилния пълен формат на името на класа. Пример за грешка е:
java ListAppuals.java
  • Тази грешка ще възникне и ако направите печатна грешка или забравете да напишете името на класа изцяло .

Ако сте допуснали някакви небрежни грешки при декларирането на името на класа, не забравяйте да го поправите и след това опитайте да стартирате програмата.

Решение 2: Проверка на пътя на класа

Ако сте декларирали името на класа правилно, но все още се показва грешката, шансовете са, че командата java не може да намери посоченото име на класа в пътя. Пътят на класовете е път, по който изпълнението на Java търси файлове с ресурси и класове. Можете лесно да зададете пътя на класа, като използвате две различни команди, както е показано по-долу:

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

За да получите по-голяма представа относно пътя на класа, трябва да разгледате следните документи.

Документация за Java команди

Задаване на път на класа

Решение 3: Проверка на директорията

Когато декларирате директория като път на класа, тя винаги ще съответства на корена на пространство от имена. Например, ако „/ usr / local / acme / classes“ е в пътя на класа, тогава Java ще търси клас „com.acme.example.Appuals“. Той ще търси клас със следното име на пътя:

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

Така че по същество, ако поставите следния адрес в пътя на класа, Java няма да може да намери класа:

/ usr / local / acme / classes / com / acme / пример

Трябва също да проверите вашия поддиректория и вижте дали отговаря на FQN. Ако FQN на вашите класове е „com.acme.example.Appuals“, тогава Java ще търси „Appuals.class“ в директорията „com / acme / example“.

За да ви дадем пример, нека предположим следния сценарий:

  • Класът, който искате да стартирате, е: com.acme.example.Appuals
  • The пълен път до файла е: /usr/local/acme/classes/com/acme/example/Appuals.class
  • The текущата работна директория е: / usr / local / acme / classes / com / acme / example /

Тогава ще се държат следните сценарии:

# грешно, FQN е необходим java Appuals # грешно, няма папка `com / acme / example` в текущата работна директория java com.acme.example.Appuals # грешно, подобно на горния сценарий java -classpath. com.acme.example.Appuals # ОК; задава се относителен път на класа java -classpath ../../ .. com.acme.example.Appuals # OK; задава се абсолютен път на класа java -classpath / usr / local / acme / classes com.acme.example.Appuals

Забележка: Пътят на класовете трябва да включва и всички останали класове (несистемни), от които се нуждаят вашите приложения.

Решение 4: Проверка на класния пакет

Ако всички горепосочени решения са валидни във вашия случай, трябва да се уверите, че изходният код е поставен в правилната папка. Освен това правилно сте декларирали пакет . Ако стартирате кода си с IDE, той вероятно ще ви информира относно проблема. В нашия случай обаче, тъй като го изпълняваме в командния ред, грешката ще остане незабелязана и ще получите обсъжданата грешка в класа.

4 минути четене