Ответ 1
Когда основной класс находится внутри пакета, вам необходимо запустить его следующим образом:
java <packageName>.<MainClassName>
В вашем случае вы должны запустить программу следующим образом:
java org.tij.exercises.HelloWorld
Я запускаю простую программу 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!!");
}
}
Когда основной класс находится внутри пакета, вам необходимо запустить его следующим образом:
java <packageName>.<MainClassName>
В вашем случае вы должны запустить программу следующим образом:
java org.tij.exercises.HelloWorld
Какое значение 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
Вы можете получить то, что хотите.
Я удалил 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!!
Поскольку вы запускаете его из командной строки, вам нужно убедиться, что ваш 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
:
echo $CLASSPATH
echo %CLASSPATH%
у которого есть записи, разделенные символом :
.
См. также: Как запустить файлы Java.class?
Одной из причин этой ошибки может быть
Не удалось найти или загрузить основной класс
<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
У меня была такая же проблема, моя была немного другой, хотя у меня не было имени пакета. Моя проблема была, например, в пути класса:
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=.
Когда вы добавляете новый параметр среды, вам нужно перезагрузить его перед включением переменной. Но из командной строки вы можете установить его. Он также может быть установлен, как я уже упоминал в начале. Для получения дополнительной информации, и если вы используете другую ОС, проверьте: Переменные среды.
Выполните свою программу Java с помощью команды java -d . HelloWorld
.
Эта команда работает, когда вы объявили пакет.
.
представляют текущий каталог/.
У меня была аналогичная проблема при запуске java на win10
вместо
$ java ./hello
Error: Could not find or load main class ..hello
Run
$ java hello
Hello, World
Я получал ту же самую ошибку за то, что забыл удалить расширение .class при запуске JAVA-класса. Поэтому вместо этого:
java myClass.class
Это нужно сделать:
java myClass
Я столкнулся с той же проблемой и попробовал все, что упоминалось здесь. Дело в том, что я не обновлял свой проект в eclipse после создания класса. И как только я обновил его, все сработало, как ожидалось.
столкнулся с той же проблемой. решаются с помощью следующих шагов
java org.tij.exercises.HelloWorld
Для многих из нас, по крайней мере для меня, я считаю, что иерархия пути класса не интуитивно понятна, так как я работаю внутри структуры каталогов, и мне кажется, что это должно быть так.
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 и каждого имени пользователя, на котором он был установлен, я думаю, что кодер, пытающийся просто что-то ускорить, заканчивается грубым принуждением переменных пути и пока что-то не будет работать, не понимая, что это значит.
по крайней мере, я это сделал.
Создайте папку org/tij/упражнения, а затем переместите файл HelloWorld.java. Затем выполните команду ниже
javac -cp . org/tij/exercises/HelloWorld.java
И
java -cp . org/tij/exercises/HelloWorld
Я использовал IntelliJ для создания моего .jar, который включал в себя несколько распакованных jar файлов из моих библиотек. У одного из этих других jar файлов был подписанный материал в MANIFEST, который препятствовал загрузке .jar файла. Никаких предупреждений или чего-то еще, просто не сработало. Could not find or load main class
Извлечение распакованной банки, в которой находился манифест, исправило ее.
Я столкнулся с подобной проблемой, но это было связано с пробелом в моей файловой директории, где я хранил свой класс Java.
Сценарий приведен ниже вместе с решением:
public class Sample{
public static void main(String[] args) {
System.out.println("Hello world, Java");
}
}