Содержание:
- Что вызывает ошибку ‘Could not find or load main class’ в Java?
- Что такое ‘java <class-name>’ синтаксис?
- Как исправить ошибку ‘Не удалось найти или загрузить основной класс’
- Решение 1: Проверка аргумента имени класса
- Решение 2: Проверка classpath
- Решение 3: Проверка каталога
- Решение 4: Проверка пакета класса
Ошибка ‘Не удалось найти или загрузить основной класс‘ возникает при использовании команды java в командной строке для запуска Java-программы с указанием имени класса в терминале. Причина, по которой это происходит, в основном кроется в программной ошибке пользователя при объявлении класса.

Как уже говорилось, эта ошибка чаще всего не связана с системой, и пользователь допускает ошибку в нескольких сценариях, как показано ниже. Прежде чем двигаться дальше, мы предполагаем, что у вас есть базовые знания о языке программирования Java и о том, как он работает.
Что вызывает ошибку ‘Could not find or load main class’ в Java?
Сообщение ‘Could not find or load main class’ означает, что первый этап получения класса для выполнения движком Java завершился неудачей. Сайт команда java не удалось найти класс в правильном каталоге.
В некоторых случаях необходимо добавить опцию правильный путь к файлу и направьте Java-терминал в правильное место. Поскольку вы выполняете команду из терминала командной строки, компьютер не знает, где нужно найти класс или где он находится. В целевых IDE такой проблемы не возникает, поскольку IDE сохраняет указатель, указывающий на текущий рабочий каталог.
Что такое ‘java <class-name>’ синтаксис?
Прежде чем приступить к поиску причин, по которым терминал выдает ошибку при попытке выполнения, сначала нужно посмотреть на синтаксис команды. Если вы используете неправильный синтаксис, то неизбежно столкнетесь с этой ошибкой.
Обычный синтаксис команды выглядит следующим образом:
java [ <опция> ... ] <class-name> [<аргумент> ...]
Здесь <вариант> является опцией командной строки, <имя класса> это полное имя класса Java, и <argument> это аргумент командной строки, который передается вашему приложению при компиляции всего пакета.
Примером правильной команды является:
java -Xmx100m com.acme.пример.ListAppuals кевин стрелы барт
Приведенная выше команда заставит команду java выполнить следующие операции:
- Она будет искать скомпилированную версию класса ‘com.acme.пример.ListAppuals‘.
- После поиска будет загружен класс.
- Далее, при загрузке класса, в нем будет выполняться поиск метода ‘main’ с допустимой сигнатурой, модификаторами и возвращаемым типом. Пример основного класса будет выглядеть примерно так:
public static void main(String[])
- Метод будет вызван с аргументами ‘kevin’, ‘arrows’ и ‘bart’ в виде string[].
Как исправить ошибку ‘Не удалось найти или загрузить основной класс’
Решение 1: Проверка аргумента имени класса
Самая распространенная ошибка пользователей заключается в том, что они указывают в качестве аргумента неправильное имя класса (или правильное имя класса имеет неправильную форму). Поскольку мы объявляем параметры в командной строке, велика вероятность, что вы передадите аргумент имени класса в неправильной форме. Здесь мы перечислим все возможные сценарии, в которых вы можете допустить ошибку.
- Написание a простое имя класса. Если вы объявляете класс в пакете, например ‘com.acme.пример», вы должны использовать полное имя класса включение пакета в команду Java.
java com.acme.пример.ListAppuals
вместо
java ListAppuals
- Вы должны объявлять имя класса вместо объявления имени файла или пути. Java не получает класс, если вы объявляете для него путь/имя файла. Неправильный в которой находятся следующие папки:
java ListAppuals.класс java com/acme/example/ListAppuals.класс
- Корпус следует учитывать. Команды Java чувствительны к регистру, и если вы ошибетесь хотя бы в одной букве, вы не сможете загрузить основной класс. Пример некорректные ошибки это:
java com.acme.пример.listappuals
- Вы не должен declare a имя исходного файла. Как уже говорилось ранее, вам нужно только объявить класс в правильном формате полного имени класса. Пример ошибки:
java ListAppuals.java
- Эта ошибка также возникнет, если вы сделаете опечатка или забыли полностью написать имя класса.
Если вы допустили небрежную ошибку при объявлении имени класса, обязательно исправьте ее, а затем попробуйте запустить программу.
Решение 2: Проверка classpath
Если вы правильно объявили имя класса, но все равно получили ошибку, то, скорее всего, команда java не смогла найти указанное имя класса по пути. Путь класса — это путь, по которому среда выполнения Java ищет файлы ресурсов и классов. Вы можете легко установить classpath с помощью двух различных команд, как показано ниже:
C:> sdkTool -classpath classpath1;classpath2... C:> set CLASSPATH=classpath1;classpath2...
Чтобы получить больше информации о пути классов, вам следует ознакомиться со следующими документами.
Решение 3: Проверка каталога
Когда вы объявляете каталог в качестве classpath, он всегда будет соответствовать корню пространства имен. Например, если «/usr/local/acme/classes» находится в classpath, то Java будет искать класс «com.acme.пример.Appuals». Он будет искать класс со следующим именем:
/usr/local/acme/classes/com/acme/example/Appuals.класс
То есть, по сути, если вы поместите в classpath следующий адрес, Java не сможет найти класс:
/usr/local/acme/classes/com/acme/example
Вам также следует проверить подкаталог и посмотрите, совпадает ли оно с FQN. Если FQN ваших классов — «com.acme.пример.Appuals», то Java будет искать «Appuals.class» в каталоге «com/acme/example».
Чтобы привести пример, предположим следующий сценарий:
- Класс, который вы хотите запустить, имеет следующий адрес: com.acme.пример.Appuals
- Сайт полный путь к файлу is: /usr/local/acme/classes/com/acme/example/Appuals.класс
- Сайт текущий рабочий каталог is: /usr/local/acme/classes/com/acme/example/
Тогда будут работать следующие сценарии:
# неправильно, требуется FQN java Appuals # неверно, в текущем рабочем каталоге нет папки `com/acme/example` java com.acme .пример.Appuals # неправильно, аналогично вышеприведенному сценарию java -classpath . com.acme.пример.Appuals # OK ; задан относительный путь класса java -classpath ../../.. com.acme.пример.Appuals # OK; задан абсолютный путь класса java -classpath /usr/local/acme/classes com.acme.пример.Appuals
Примечание: В classpath также должны быть включены все другие классы (несистемные), которые нужны вашему приложению.
Решение 4: Проверка пакета класса
Если все вышеперечисленные решения справедливы для вашего случая, вам необходимо убедиться, что исходный код помещен в правильную папку. Кроме того, вы правильно объявили пакет. Если вы запустите свой код в IDE, она, вероятно, сообщит вам о проблеме. Однако в нашем случае, поскольку мы запускаем ее в командной строке, ошибка останется незамеченной, и вы получите обсуждаемую ошибку класса.