Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

“Could not find or load main class” при запуске программы

#java


Пытаюсь выполнить обычный Hello, World, как это сказано в одном из мануалов.

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


Запускаю в транслятор так:

javac C:\Java\HelloWorld.java


Все проходит успешно. По крайней мере, никаких сообщений о крахе не выводится.

Но когда уже хочу получить результат, запуская так:

java HelloWorld


То в консоли выводится ошибка:


  Java could not find the main class HelloWorld


Как его запустить, в чем проблема?

Вот полный лог происходящего в консоли:


  C:\Program Files\Java\jdk1.7.0_07\bin>javac C:\Java\HelloWorld.java
  
  C:\Program Files\Java\jdk1.7.0_07\bin>java HelloWorld
  Error: Could not find or load main class HelloWorld
  
  C:\Program Files\Java\jdk1.7.0_07\bin>

    


Ответы

Ответ 1



Пробуйте так: java -classpath . HelloWorld или так: java -cp . HelloWorld Иначе java не может найти скомпилированный класс.

Ответ 2



У меня был случай когда даже команда java -classpath . HelloWorld давала ошибку "Could not find or load main class" решилось таким образом java -classpath "jar_name" com.list_of_your_packages.launcher То есть нужно было указать сам джарник в classpath, а потом указать полный путь к классу с main методом

Ответ 3



Может быть кому-нибудь пригодится. Нашел еще один вариант ответа, который помог мне: Иногда полезно читать не только книжки, но и документацию. http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html java команда не воспринимает ваше e:\MyJava\example как путь вообще. Она считает что это имя класса. Пути задаются иначе. Это большая и сложная тема - classpath. java -cp e:\MyJava\ example Мы указываем искать классы в e:\MyJava\ запустить класс example.

Ответ 4



Для класса, лежащего в директории src и в пакете basic, package basic; public class Main { public static void main(String[] args) { System.out.println("Hello from Main"); } } у меня работает так $ javac src/basic/Main.java $ java -cp src basic.Main Hello from Main

Ответ 5



Проблема решается, если изменить строку запуска вместо команды javac C:\Java\HelloWorld.java запускать так javac C:\Java\HelloWorld С удалением расширения файла *.java мэйн класс обнаруживается. Программа запускается. Почему именно так, я не стал разбираться.

Ответ 6



Потратил не мало времени что бы решить этот вопрос, а решение таково. Нужно правильно прописывать переменные среды. Нужно в переменных среды указывать путь к bin и путь к lib. Про lib редко кто говорит. Если запускать из командной строки и путь к библиотекам не указан в переменных среды, то jvm не знает где их брать. Win 10. Например c:\Program Files\Java\jdk-10.0.1\lib\ и c:\Program Files\Java\jdk-10.0.1\bin\ Успехов!

Ответ 7



В переменных среды, где пишете в переменную CLASSPATH путь до JDK, перед путем поставьте ".;". У меня получилось .;C:\Program Files\Java\jdk1.8.0_201\bin Точка означает текущий каталог. После редактирования не забудьте перезагрузить Windows.

Ответ 8



Перейди в нужный каталог с помощью консольной команды cd; Так же можно добавить нужный путь в переменную среды CLASSPATH; Самый простой способ это вызвать CMD из TotalCommander, перейдя в нужный катало.

Комментариев нет:

Отправить комментарий