Ошибка « Не удалось найти или загрузить основной класс » возникает при использовании команды java в командной строке для запуска программы Java путем указания имени класса в терминале. Причина, по которой это происходит, в основном связана с ошибкой программирования пользователя при объявлении класса.
Как уже упоминалось раньше эта ошибка в основном не связана с системой, и пользователь допускает ошибку в нескольких сценариях, как показано ниже. Прежде чем двигаться дальше, мы предполагаем, что у вас есть базовые знания о языке программирования Java и о том, как он работает.
Что вызывает ошибку «Не удалось найти или загрузить основной класс» в Java?
Сообщение «Не удалось найти или загрузить основной класс» означает, что первый шаг Механизм Java не смог получить класс для выполнения. java-команде не удалось найти класс в правильном каталоге.
В некоторых случаях вам нужно добавить правильный путь к файлу и укажите терминал Java в правильном месте. Поскольку вы выполняете команду из терминала командной строки, компьютер не знает, где находится класс или где он находится. В целевой среде IDE это не проблема, поскольку среда IDE сохраняет указатель, указывающий на текущий рабочий каталог.
Что такое синтаксис ‘java ‘?
Прежде чем мы начнем устранять неполадки, по которым терминал возвращает нам ошибку при попытке выполнения, сначала нам нужно взглянуть на синтаксис команды. Если вы не используете правильный синтаксис, вы неизбежно столкнетесь с этой ошибкой.
Обычный синтаксис команды выглядит примерно так:
java [ ...] [ ...]
Здесь – параметр командной строки, – полное имя класса Java, и – это аргумент командной строки, который передается вашему приложению при компиляции всего пакета.
Пример допустимой команды:
java -Xmx100m com.acme.example.ListAppuals kevin arrow bart
Приведенная выше команда заставит java-команду выполнять следующие операции:
- Она будет искать скомпилированная версия класса ‘ com.acme.example.ListAppuals ‘.
- После поиска он загрузит класс.
- Затем, когда класс загружен, в классе будет выполняться поиск «основного» метода с действительной подписью, модификаторами и типом возвращаемого значения. Пример основного класса будет выглядеть примерно так:
public static void main (String [])
- Метод будет вызываться с аргументами “кевин”, “стрелки” и “барт” в виде строки [].
Как исправить ошибку “Не удалось найти или загрузить основной класс”
Решение 1. Проверка аргумента имени класса
Самая распространенная ошибка пользователей заключается в том, что они предоставляют неправильное имя класса в качестве аргумента (или правильное имя класса имеет неправильную форму). Поскольку мы объявляем параметры в командной строке, весьма вероятно, что вы передадите аргумент имени класса в неправильной форме. Здесь мы перечислим все возможные сценарии, в которых вы можете сделать ошибку.
- Написание простого имени класса . Если вы объявляете класс в пакете, таком как com.acme.example, вы должны использовать полное имя класса , включая пакет, в команде Java.
java com.acme.example.ListAppuals
вместо
java ListAppuals
- Вам следует объявить имя класса вместо объявления имени файла или пути. Java не получает класс, если вы объявляете для него путь/имя файла. Неправильные записи включают следующее:
java ListAppuals.classjava 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/example
Вы также должны проверить свой подкаталог и посмотреть, соответствует ли он 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
- текущий рабочий каталог is:/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; относительный путь к классам - setjava -classpath ../../.. com.acme.example.Appuals # OK; установлен абсолютный путь к классам java -classpath/usr/local/acme/classes com.acme.example.Appuals
Примечание. Путь к классам также должен включать все другие классы (несистемные), которые нужны вашим приложениям.
Решение 4. Проверка пакета классов
Если все вышеперечисленные решения верно в вашем случае, вам нужно убедиться, что ваш исходный код помещен в правильную папку. Кроме того, вы правильно объявили пакет . Если вы запустите свой код с IDE, он, вероятно, проинформирует вас о проблеме. Однако в нашем случае, поскольку мы запускаем его в командной строке, ошибка останется незамеченной, и вы получите обсуждаемую ошибку класса.