19

Что значит "Не удалось найти или загрузить основной класс"?

16

Распространенной проблемой, с которой сталкиваются новички в разработке на Java, является то, что их программы не запускаются с ошибкой: Could not find or load main class ...

Что это означает, что вызывает эту ошибку и как её исправить?

5 ответ(ов)

3

Если ваше исходное имя файла — HelloWorld.java, то скомпилированный код будет называться HelloWorld.class.

Ошибка возникнет, если вы попытаетесь запустить программу с помощью команды:

java HelloWorld.class

Вместо этого используйте следующую команду:

java HelloWorld
1

Если ваши классы находятся в пакетах, вам нужно перейти в корневую директорию вашего проекта и запустить программу с использованием полным именем класса (packageName.MainClassName).

Например:

Мои классы находятся здесь:

D:\project\com\cse\

Полное имя моего главного класса будет выглядеть так:

com.cse.Main

Поэтому сначала я перехожу в корневую директорию проекта:

D:\project

Затем выполняю команду java:

java com.cse.Main
1

С ключевым словом '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
0

Когда один и тот же код работает на одном ПК, но выдает ошибку на другом, одним из лучших решений, которые я когда-либо находил, является компиляция следующим образом:

javac HelloWorld.java
java -cp . HelloWorld

Убедитесь, что вы компилируете и запускаете программу в той же директории, где находится ваш .java файл. Часто подобные проблемы возникают из-за неправильных путей или различий в установленных версиях Java на разных машинах. Также проверьте, чтобы пути к JDK и другим зависимостям были настроены корректно.

0

Указание пути к классам (classpath) в командной строке помогло мне. Например:

  1. Создайте новую папку C:\temp.

  2. Создайте файл Temp.java в C:\temp со следующим содержимым:

    public class Temp {
        public static void main(String args[]) {
            System.out.println(args[0]);
        }
    }
    
  3. Откройте командную строку в папке C:\temp и выполните следующую команду для компиляции класса Temp:

    javac Temp.java
    
  4. Запустите скомпилированный класс Java, добавив опцию -classpath, чтобы JRE знал, где искать класс:

    java -classpath C:\temp Temp Hello!
    

Теперь вы сможете увидеть вывод программы.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь