Исправлено: не удалось найти или загрузить основной класс

Ошибка « Не удалось найти или загрузить основной класс » возникает при использовании команды java в командной строке для запуска Java-программы с указанием имени класса в терминале. Причина, по которой это происходит, в основном связана с ошибкой программирования пользователя при объявлении класса.

Не удалось найти или загрузить основной класс - командная строка Java

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

Что вызывает ошибку «Не удалось найти или загрузить основной класс» в Java?

Сообщение «Не удалось найти или загрузить основной класс» означает, что первый шаг механизма Java, извлекающего класс для выполнения, завершился неудачно. Команда java не смогла найти класс в правильном каталоге.

В некоторых случаях вы должны добавить правильный путь к файлу и указать Java-терминал в правильное местоположение. Поскольку вы выполняете команду из терминала командной строки, компьютер не знает, где находится класс или где он находится. В целевых IDE это не проблема, поскольку IDE сохраняет указатель, указывающий на текущий рабочий каталог.

Что такое синтаксис Java?

Прежде чем приступить к устранению неполадок, почему терминал возвращает нам ошибку при попытке выполнить, сначала нам нужно посмотреть на синтаксис команды. Если вы не используете правильный синтаксис, вы неизбежно столкнетесь с этой ошибкой.

Обычный синтаксис команды выглядит примерно так:

 Джава [ ... ] [ ...] 

Вот опция командной строки, это полное имя класса Java и аргумент командной строки, который передается вашему приложению при компиляции всего пакета.

Пример правильной команды:

 java -Xmx100m com.acme.example.ListAppuals Кевин Стрелки Барт 

Приведенная выше команда заставит команду java выполнить следующие операции:

  • Будет выполнен поиск скомпилированной версии класса com.acme.example.ListAppuals .
  • После поиска будет загружен класс.
  • Затем, когда класс загружен, в классе будет производиться поиск «основного» метода с правильной сигнатурой, модификаторами и типом возвращаемого значения. Пример основного класса будет примерно таким:
 public static void main (String []) 
  • Метод будет вызываться с аргументами 'kevin', 'arrow' и 'bart' в виде строки [].

Как исправить «Не удалось найти или загрузить основной класс»

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

Самая распространенная ошибка, которую делают пользователи, заключается в том, что они вводят неверное имя класса в качестве аргумента (или правильное имя класса является неправильной формой). Поскольку мы объявляем параметры в командной строке, весьма вероятно, что вы передадите аргумент имени класса в неправильной форме. Здесь мы перечислим все возможные сценарии, в которых вы можете ошибиться.

  • Написание простого имени класса . Если вы объявляете класс в пакете, таком как '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 ищет файлы ресурсов и классов. Вы можете легко установить classpath, используя две разные команды, как показано ниже:

 C:> sdkTool -classpath classpath1; classpath2 ... C:> установить CLASSPATH = classpath1; classpath2 ... 

Чтобы получить более полное представление о пути к классам, вы должны проверить следующие документы.

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

Установка пути к классам

Решение 3: Проверка каталога

Когда вы объявляете каталог как путь к классу, он всегда будет соответствовать корню пространства имен. Например, если «/ usr / local / acme / classes» находится в пути к классам, тогда Java будет искать класс «com.acme.example.Appuals». Он будет искать класс со следующим путем:

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

По сути, если вы поместите следующий адрес в classpath, Java не сможет найти класс:

 / USR / местные / Acme / классы / ком / Acme / пример 

Вы также должны проверить свой подкаталог и посмотреть, соответствует ли он FQN. Если FQN ваших классов - «com.acme.example.Appuals», то Java будет искать «Appuals.class» в каталоге «com / acme / example».

Чтобы дать вам пример, давайте предположим следующий сценарий:

  • Класс, который вы хотите запустить: com.acme.example.Appuals
  • Полный путь к файлу : /usr/local/acme/classes/com/acme/example/Appuals.class
  • Текущий рабочий каталог : / usr / local / acme / classes / com / acme / example /

Тогда будут иметь место следующие сценарии:

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

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

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

Если все вышеперечисленные решения верны в вашем случае, вам нужно убедиться, что ваш исходный код находится в правильной папке. Также вы правильно объявили посылку . Если вы запустите свой код с IDE, он, вероятно, сообщит вам о проблеме. Однако в нашем случае, поскольку мы запускаем его в командной строке, ошибка останется незамеченной, и вы получите обсуждаемую ошибку класса.

Интересные статьи