Подтвердить что ты не робот

"Не удалось найти или загрузить основной класс" Ошибка при запуске java-программы с помощью команды cmd

Я запускаю простую программу HelloWorld. Я получаю эту ошибку в командной строке:

Не удалось найти или загрузить основной класс HelloWorld.

Я установил в системе переменную CLASSPATH и PATH. В приглашении cmd я запускаюсь из каталога, в котором я сохранил программу HelloWorld. Я вижу, что имя класса и имя файла одинаковы, а также файл .class, созданный в том же каталоге. Что еще может быть проблемой?

Моя примерная программа выглядит следующим образом:

package org.tij.exercises;
public class HelloWorld {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("Hello World!!");
  }
}
4b9b3361

Ответ 1

Когда основной класс находится внутри пакета, вам необходимо запустить его следующим образом:

java <packageName>.<MainClassName>

В вашем случае вы должны запустить программу следующим образом:

java org.tij.exercises.HelloWorld 

Ответ 2

Какое значение CLASSPATH?

Это может выглядеть так:

 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 

Я думаю, ваше значение не содержит этого .;.

Итак, ДОБАВЛЯТЬ ЭТО.
Когда вы закончите, перезапустите CMD

Это может сработать.


Например, файл HelloWorld.java находится в пути: D:\myjavatest\org\yz\test и его package: org.yz.test.

Теперь вы находитесь на пути D:\myjavatest\ на линии CMD.
Введите это, чтобы скомпилировать его:

javac org/yz/test/HelloWorld.java

Затем введите это, чтобы запустить его:

java org.yz.test.HelloWorld

Вы можете получить то, что хотите.

Ответ 3

Я удалил bin из CLASSPATH. Я узнал, что я выполнял команду java из каталога, в котором находится HelloWorld.java, то есть:

C:\Users\xyz\Documents\Java\javastudy\src\org\tij\exercises>java HelloWorld

Итак, я вернулся в основной каталог и выполнил:

java org.tij.exercises.HelloWorld

и это сработало, то есть:

C:\Users\xyz\Documents\Java\javastudy\src>java org.tij.exercises.HelloWorld

Hello World!!

Ответ 4

Поскольку вы запускаете его из командной строки, вам нужно убедиться, что ваш classpath верен. Если вы уже установили его, вам необходимо перезагрузить терминал, чтобы перезагрузить системные переменные.

Если -classpath и -cp не используются, а CLASSPATH не установлен, используется текущий каталог (.), однако при запуске .class файлов вам необходимо находиться в папке, которая состоит из папки с именем Java.

Итак, имея файл .class в ./target/classes/com/foo/app/App.class, у вас есть следующие возможности:

java -cp target/classes com.foo.app.App
CLASSPATH=target/classes java com.foo.app.App
cd target/classes && java com.foo.app.App

Вы можете проверить свой путь к классам, напечатав переменную CLASSPATH:

  • Linux: echo $CLASSPATH
  • Windows: echo %CLASSPATH%

у которого есть записи, разделенные символом :.

См. также: Как запустить файлы Java.class?

Ответ 5

Одной из причин этой ошибки может быть

Не удалось найти или загрузить основной класс <class name>

Возможно, вы используете свое имя класса как другое имя и сохраняете имя класса с другим именем, вы можете сохранить имя исходного файла java другим именем, кроме имени класса. Например:

class A{
    public static void main(String args[]) {
        System.out.println("Hello world");
    }
}

вы можете сохранить как Hello.java, но

Скомпилировать: javac Hello.java

Это автоматически сгенерирует файл A.class в том же месте.

Теперь для запуска    : java A

Ответ 6

У меня была такая же проблема, моя была немного другой, хотя у меня не было имени пакета. Моя проблема была, например, в пути класса:

C:\Java Example>java -cp . HelloWorld 

Опция -cp для Java и из того, что я могу сказать по моему опыту (не так много), но я столкнулся с ошибкой примерно в 20 раз, пытаясь использовать разные методы, и пока не объявил, что класс Path я получил ту же ошибку. Вишрант был прав, заявив это. представляет текущий каталог.

Если вам нужна дополнительная информация о параметрах java, введите java -? или java -help, я думаю, что параметры не являются необязательными.

Я только что сделал несколько исследований, я нашел веб-сайт, который подробно рассказывает о CLASSPATH. CLASSPATH должен быть установлен как переменная среды; к текущему каталогу <. > . Вы можете установить его из командной строки в окнах:

// Set CLASSPATH to the current directory '.'
prompt> set CLASSPATH=.

Когда вы добавляете новый параметр среды, вам нужно перезагрузить его перед включением переменной. Но из командной строки вы можете установить его. Он также может быть установлен, как я уже упоминал в начале. Для получения дополнительной информации, и если вы используете другую ОС, проверьте: Переменные среды.

Ответ 7

Выполните свою программу Java с помощью команды java -d . HelloWorld.

Эта команда работает, когда вы объявили пакет.

. представляют текущий каталог/.

Ответ 8

У меня была аналогичная проблема при запуске java на win10

вместо

$ java ./hello
Error: Could not find or load main class ..hello

Run

$ java hello
Hello, World

Ответ 9

Я получал ту же самую ошибку за то, что забыл удалить расширение .class при запуске JAVA-класса. Поэтому вместо этого:

java myClass.class

Это нужно сделать:

java myClass

Ответ 10

Я столкнулся с той же проблемой и попробовал все, что упоминалось здесь. Дело в том, что я не обновлял свой проект в eclipse после создания класса. И как только я обновил его, все сработало, как ожидалось.

Ответ 11

столкнулся с той же проблемой. решаются с помощью следующих шагов

  • перейдите в каталог, содержащий пакет "org.tij.exercises" (например: в eclipse это может быть ваша папка src)
  • использовать java org.tij.exercises.HelloWorld

Ответ 12

Для многих из нас, по крайней мере для меня, я считаю, что иерархия пути класса не интуитивно понятна, так как я работаю внутри структуры каталогов, и мне кажется, что это должно быть так.

Java ищет имя класса на основе пути пакета, а не только путь к файлу.

Не имеет значения, если: Я находится в локальном каталоге. /packagefoo/MainClass или каталог вверх. /packagefoo/, или один вниз. /packagefoo/MainClass/foo.

Команда "java packagefoo.MainClass" запускает корень% CLASSPATH%, что означает что-то существенное для Java. Затем оттуда он обходит имена пакетов, а не имена путей, такие как мы, программисты, которые ожидали бы.

Итак, если мой CLASSPATH установлен на% CWD%/, тогда будет работать "java packagefoo.MainClass". Если я установил CLASSPATH в% CWD%/packagefoo/then packagefoo.MainClass не удалось найти. Всегда "java MainClass" ничего не значит, если он является членом "пакета", пока я не вырву из java-кода "package packagefoo;" и переместите файл класса в каталог.

Фактически, если я изменю "package packagefoo"; "пакет foopackage"; Мне нужно создать подпапку под CLASSPATH/foopackage или foopackage.MainClass перестает работать снова.

Что еще хуже: между PATH, CLASSPATH, JAVAHOME, для Windows, JDeveloper, Oracle Database и каждого имени пользователя, на котором он был установлен, я думаю, что кодер, пытающийся просто что-то ускорить, заканчивается грубым принуждением переменных пути и пока что-то не будет работать, не понимая, что это значит.

по крайней мере, я это сделал.

Ответ 13

Создайте папку org/tij/упражнения, а затем переместите файл HelloWorld.java. Затем выполните команду ниже

javac -cp . org/tij/exercises/HelloWorld.java

И

java -cp . org/tij/exercises/HelloWorld

Ответ 14

Я использовал IntelliJ для создания моего .jar, который включал в себя несколько распакованных jar файлов из моих библиотек. У одного из этих других jar файлов был подписанный материал в MANIFEST, который препятствовал загрузке .jar файла. Никаких предупреждений или чего-то еще, просто не сработало. Could not find or load main class

Извлечение распакованной банки, в которой находился манифест, исправило ее.

Ответ 15

Я столкнулся с подобной проблемой, но это было связано с пробелом в моей файловой директории, где я хранил свой класс Java.

Сценарий приведен ниже вместе с решением:

   public class Sample{
      public static void main(String[] args) {
        System.out.println("Hello world, Java");
      }
}
  • Мой класс Sample.java хранился в папке Dir "D:\Java Programs\Sample.java" [ПРИМЕЧАНИЕ. Оператор пакета не представлен в классе java].
  • В командной строке изменил каталог на "D:\Java Programs \", мой запрограммированный скомпилирован, но не удалось запустить с ошибкой "Не удалось найти или загрузить основной класс"
  • После всех возможных решений по SOF (ничего не сработало), я понял, что пространство может вызвать у меня эту проблему.
  • Удивительно, но при удалении char из пространства имен папок ['Java Programs' → 'JavaPrograms'] моя программа успешно выполнена.

    Надеюсь, это поможет