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

Ошибка « Не удалось найти или загрузить основной класс » возникает при использовании 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 как string [].

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

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

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

По сути, если вы укажете следующий адрес в пути к классам, 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 / местные / Acme / классы / ком / Acme / пример /

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

# неверно, требуется 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, он, вероятно, проинформирует вас о проблеме. Однако в нашем случае, поскольку мы запускаем его в командной строке, ошибка останется незамеченной, и вы получите обсуждаемую ошибку класса.