Что значит "Не удалось найти или загрузить основной класс"?
Распространенной проблемой, с которой сталкиваются новички в разработке на Java, является то, что их программы не запускаются с ошибкой: Could not find or load main class ...
Что это означает, что вызывает эту ошибку и как её исправить?
5 ответ(ов)
Если ваше исходное имя файла — HelloWorld.java, то скомпилированный код будет называться HelloWorld.class
.
Ошибка возникнет, если вы попытаетесь запустить программу с помощью команды:
java HelloWorld.class
Вместо этого используйте следующую команду:
java HelloWorld
Если ваши классы находятся в пакетах, вам нужно перейти в корневую директорию вашего проекта и запустить программу с использованием полным именем класса (packageName.MainClassName).
Например:
Мои классы находятся здесь:
D:\project\com\cse\
Полное имя моего главного класса будет выглядеть так:
com.cse.Main
Поэтому сначала я перехожу в корневую директорию проекта:
D:\project
Затем выполняю команду java
:
java com.cse.Main
С ключевым словом 'package'
Если у вас в исходном коде есть ключевое слово package
(основной класс определен в пакете), вам нужно запускать программу из иерархической директории, используя полное имя класса (packageName.MainClassName
).
Предположим, у вас есть файл исходного кода (Main.java):
package com.test;
public class Main {
public static void main(String[] args) {
System.out.println("salam 2nya\n");
}
}
Для запуска этого кода вы должны разместить файл Main.class
в директории, соответствующей пакету:
C:\Users\workspace\testapp\com\test\Main.class
Затем измените текущую директорию терминала на корневую директорию вашего проекта:
cd C:\Users\workspace\testapp
И наконец, выполните код:
java com.test.Main
Без ключевого слова 'package'
Если у вас в исходном коде нет пакета, возможно, вы ошиблись в команде. Предположим, ваш Java файл называется Main.java
, после компиляции:
javac Main.java
ваш скомпилированный код будет Main.class
.
Вы получите ошибку, если вызовете его с помощью команды:
java Main.class
Вместо этого используйте:
java Main
Когда один и тот же код работает на одном ПК, но выдает ошибку на другом, одним из лучших решений, которые я когда-либо находил, является компиляция следующим образом:
javac HelloWorld.java
java -cp . HelloWorld
Убедитесь, что вы компилируете и запускаете программу в той же директории, где находится ваш .java
файл. Часто подобные проблемы возникают из-за неправильных путей или различий в установленных версиях Java на разных машинах. Также проверьте, чтобы пути к JDK и другим зависимостям были настроены корректно.
Указание пути к классам (classpath) в командной строке помогло мне. Например:
Создайте новую папку
C:\temp
.Создайте файл
Temp.java
вC:\temp
со следующим содержимым:public class Temp { public static void main(String args[]) { System.out.println(args[0]); } }
Откройте командную строку в папке
C:\temp
и выполните следующую команду для компиляции классаTemp
:javac Temp.java
Запустите скомпилированный класс Java, добавив опцию
-classpath
, чтобы JRE знал, где искать класс:java -classpath C:\temp Temp Hello!
Теперь вы сможете увидеть вывод программы.
Не удается выполнить jar-файл: "отсутствует основной атрибут манифеста"
Как установить Java 8 на Mac
Почему в RecyclerView отсутствует onItemClickListener()?
Что значит 'synchronized'?
Как сослаться на метод в Javadoc?