Не удалось найти или загрузить основной класс - PullRequest
24 голосов
/ 04 октября 2011

У меня Windows 7, установленный jdk1.7.0 и поддерживающий его jre7.
Моя проблема в том, что часть компиляции работает отлично, но во время работы программы на Java появляется следующее сообщение:

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

Я храню все свои программы в папке javalab.Я установил путь к нему.Процедура выглядит так:

C:\Users\user>cd\

C:\>cd javalab

C:\javalab>autoexec.bat

C:\javalab>set path=C:\Program Files\Java\jdk1.7.0\bin

C:\javalab>javac p1.java

C:\javalab>java p1
Error: Could not find or load main class p1

C:\javalab> 

Ответы [ 16 ]

28 голосов
/ 01 декабря 2012

У меня была похожая проблема с моей самой первой Java-программой.

Я выполнял эту команду

java HelloWorld.class

Что привело к той же ошибке.

Оказывается, вам нужно исключить .class

java HelloWorld
12 голосов
/ 01 декабря 2012

Попробуйте:

java -cp . p1

Это сработало для меня, когда у меня возникла та же проблема с использованием Fedora (linux)

9 голосов
/ 03 декабря 2013

Простой способ скомпилировать и выполнить файл Java. (HelloWorld.java не включает в себя пакет)

set path="C:\Program Files (x86)\Java\jdk1.7.0_45\bin"
javac "HelloWorld.java"
java -cp . HelloWorld
pause
6 голосов
/ 04 октября 2011

javac должен знать, где искать классы. Попробуйте это:

javac -cp . p1.java

Вам не нужно указывать classpath. Вы уверены, что файл p1.java существует?

4 голосов
/ 14 января 2013

У меня была почти такая же проблема, но со следующим вариантом:

  1. Я импортировал готовый проект maven в Eclipse IDE с PC1 (проект работал там отлично), чтобыдругой PC2
  2. , когда пытался запустить проект на ПК 2, получил ту же ошибку «Не удалось найти или загрузить основной класс»
  3. Я проверил переменную PATH (в ней было много значенийcase) и добавил переменную JAVA_HOME (в моем случае это была JAVA_HOME = C: \ Program Files \ Java \ jdk1.7.0_03). После перезапуска Ecplise он все еще не работал
  4. Я пытался запустить простой HelloWorld.java на ПК2 (в другом проекте) - это сработало
  5. Итак, я добавил класс HelloWorld в недавно импортированный проект, выполнил его там и, хах, мой основной класс в этом проекте также начал нормально работать.

Это довольно странное поведение, я не могу его полностью понять.Надеюсь, это кому-нибудь поможет.тоже.

3 голосов
/ 03 января 2013

Вот мои рабочие переменные пути env после большого устранения проблем

CLASSPATH

.; C: \ Program Files (x86) \ Java \ jre7 \ lib \ ext \ QTJava.zip; C: \ Program Files (x86) \ Java \ jdk1.6.0_27 \ bin

ПУТЬ <--- иногда этот ПУТЬ заполняется слишком большим количеством путей, и вы не можете добавить путь (что было в моем случае!) </p>

Связка путей; C: \ Program Files (x86) \ Java \ jdk1.6.0_27 \ bin

Кроме того, когда вы пытаетесь использовать cmd для запуска файла ... убедитесь, что вы находитесь в локальном каталоге как файл, который вы пытаетесь выполнить (что вы и сделали).

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

3 голосов
/ 04 октября 2011

Сначала проверьте ваше имя класса. Это должно быть p1 согласно инструкции вашего командного файла. А затем проверьте ваш пакет этого класса, если он находится внутри какого-либо пакета, укажите при запуске.

Если пакет x.y

java x.y.p1
3 голосов
/ 04 октября 2011

Полагаю, у вас другое имя класса в p1.java

2 голосов
/ 01 февраля 2013

У меня были похожие проблемы.Если вы работаете с Eclipse, вам нужно перейти в папку, где находится ваша папка src / ... Если вы использовали пакет - тогда вы используете

javac -cp . packageName/className

, что означает, что у вас был пакетс именем def и основным классом с именем TextFrame.java вы бы написали

javac -cp . def/TextFrame

, пропустив конечное расширение .java, а затем запустили его с

java def/TextFrame 

и, если у вас естьесть аргументы, тогда вам нужно предоставить его с аргументами, соответствующими вашей программе.Надеюсь, это немного поможет.

1 голос
/ 11 марта 2015

Если у вас есть один файл .java для компиляции с использованием командной строки, то удалите самые верхние части пакета из кода, снова скомпилируйте, это будет работать.

Это сработало для меня.

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