Javac не работает в командной строке Windows

132

Я пытаюсь использовать javacс командной строкой Windows, но это не работает.

После добавления каталога "C:\Program Files\Java\jdk1.6.0_16\bin\"в конец PATHпеременной среды, javaкоманда работает нормально, но использование javacдает мне следующую ошибку:

«javac» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

Доменик
источник

Ответы:

162

Если вы добавили его в панель управления при открытой командной строке, это не повлияет на текущую командную строку. Вам нужно выйти и заново открыть или просто сделать:

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"

Для проверки выполните:

echo %path%

из командной строки и дайте нам знать, что это такое.

В противном случае, убедитесь , что это Javac в этой директории, пытаясь:

"c:\program files\java\jdk1.6.0_16\bin\javac.exe"

из командной строки. Вы также можете указать, какой исполняемый файл (если есть) используется с командой:

for %i in (javac.exe) do @echo %~$PATH:i

Это хитрый прием, похожий на команды whichи / или whenceв некоторых операционных системах типа UNIX.

paxdiablo
источник
11
ах да, все, что мне нужно было сделать, это снова открыть командную строку, и все заработало, спасибо!
Доменик
1
+1. "For% i in (java.exe) do @echo% ~ $ PATH: i" только что спас мой день. Я просто случайный пользователь Windows, и я просто не знал, что может быть еще один скрытый java.exe в c: \ windows \ system :)
Дэвид а.
1
Вышеуказанная команда set path не работает для меня в Windows 7. Мне пришлось использовать set path = "% path%; c: \ program files \ java \ jdk1.6.0_16 \ bin. То есть без кавычек! Я не знаком с командной строкой Windows, но кажется, что кавычки сохраняются, поэтому наличие их в% path% сделает его совершенно непригодным для использования
user716468
@ user716468, есть способ сделать это с помощью графического интерфейса в windows вместо командной строки. Если вы работаете в Windows 7, просто введите var в поисковом меню «Пуск» и нажмите «Изменить переменные среды». Если вы работаете в Windows XP, щелкните правой кнопкой мыши «Мой компьютер», выберите «Свойства», перейдите на вкладку «Дополнительно» и нажмите кнопку «Переменные среды» в нижней части. Там вы можете найти два списка. Найдите имя с именем PATH в нижнем списке и нажмите «Изменить». Теперь добавьте путь к вашему JDK, которому предшествует точка с запятой. Вы сделали!
fz_salam
есть также команда "where" в недавних командных строках Windows
x29a
87

ОС Windows выполняет поиск исполняемых программ в текущем каталоге и каталогах, перечисленных в переменной среды PATH. Программы JDK (такие как компилятор Java javac.exe и среда выполнения Java java.exe) находятся в каталоге «\ bin» (где обозначает установленный каталог JDK, например, C: \ Program Files \ Java \ jdk1.8.0_xx). Вам необходимо включить каталог «\ bin» в PATH.

Чтобы изменить переменную среды PATH в Windows XP / Vista / 7/8:

  1. Панель управления ⇒ Система ⇒ Расширенные настройки системы

  2. Перейдите на вкладку «Дополнительно» ⇒ Переменные среды.

  3. В «Системных переменных» прокрутите вниз, чтобы выбрать «ПУТЬ» ⇒ Изменить.

((теперь прочтите следующие 3 раза, прежде чем продолжить, ОТМЕНА НЕТ ))

В поле «Значение переменной» ВСТАВЬТЕ «c: \ Program Files \ Java \ jdk1.8.0_xx \ bin» (замените xx на номер обновления и ПРОВЕРЬТЕ, что это двоичный каталог вашего JDK !!!) ПЕРЕД всеми существующими каталоги, за которыми следует точка с запятой (;), которая отделяет двоичный каталог JDK от остальных существующих каталогов. НЕ УДАЛЯЙТЕ существующие записи; в противном случае некоторые существующие приложения могут не работать.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]

Скриншот

Майк
источник
Для шага 4. Я обнаружил, что должен был выбрать не jre <ваш номер>, а jdk <ваш номер>. Потом все остальное работало нормально.
Морган Кеньон
Аккуратно и ясно! Лучший ответ. Работал на меня.
M_R_K
В моем случае для шага 4 я открыл jdk. По сути, у меня было это для PATH: C: \ Program Files \ Java \ jdk1.7.0_67 \ bin. javac.exe был не в JRE, а в JDK.
sedeh
У меня работает :)
РАДЖЕШ КУМАР АРУМУГАМ
34

После долгого поиска в Google я узнал, что javac.exe будет внутри JDK (C: \ Program Files \ Java \ jdk (номер версии) \ bin), а не внутри JRE (C: \ Program Files (x86) \ Java \ jre7 \ bin) «JRE не поставляется с компилятором. Это (JRE) просто среда выполнения java. Вам нужен комплект для разработки Java». чтобы использовать компилятор javac

javac не будет работать, если вы указываете bin внутри jre

Чтобы использовать javac в cmd, в вашей системе должен быть установлен JDK ...

Для пути javac

путь = C: \ Program Files (x86) \ Java \ jre7 \ bin это неправильно

путь = C: \ Program Files \ Java \ jdk (номер версии) \ bin это правильно

Убедитесь, что «javac.exe» находится внутри вашего «C: \ Program Files \ Java \ jdk (номер версии) \ bin»

Не путайте с JRE и JDK, оба они совершенно разные

Если у вас нет JDK, пожалуйста, скачайте по этой ссылке

https://jdk.java.net/

или

http://www.oracle.com/technetwork/java/javase/downloads/index.html

справочная ветка для JDK VS JRE В чем разница между JDK и JRE?

TechDog
источник
6

Я знаю, что это может быть не ваша конкретная ошибка, но когда-то у меня было ведущее место на моем пути, и java будет работать, а javac - нет.

Как бы то ни было, я предлагаю мудрый совет: «Внимательно исследуй свой путь».

Сэм
источник
5

Попробуйте решения здесь: http://techdem.centerkey.com/2009/05/javahome-command-script.html

Их гораздо надежнее изменить - например, при обновлении JDK или JRE, поскольку нет жестко закодированного пути.

Быстрое решение (если вы не хотите читать блог):

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
C:\>set PATH=%PATH%;%JAVA_HOME%

Затем вы можете добавить эти строки в сценарий запуска / входа в систему.

Джейсон
источник
2
Для вызова подобного javac мне пришлось использовать «set PATH =% PATH%;% JAVA_HOME% \ bin» (обратите внимание на добавленный \ bin).
user31389 01
4

Я просто должен был сделать это, чтобы заставить это работать на Windows 7 64.

Откройте командную строку (cmd.exe) и введите:

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin

Убедитесь, что вы повторно открыли всю запущенную командную строку Windows, чтобы также обновить переменную среды.

Райан Саммей
источник
1
Я думаю, здесь лучше отключить путь к классам. Я бы не стал использовать переменную CLASSPATH, особенно в Windows, где она глобальна и влияет на несколько JRE ...
eckes
4

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

Это создаст начальный пробел в пути, например «C: \ Program Files \ Java \ jdk1.6.0 \ bin», и, следовательно, «javac.exe» не будет найден системой.

Малайский десай
источник
2

Измените папку «jdk1.7.0_45» на «jdk1_7_0_60» и обновите путь в среде Windows. В противном случае путь игнорирует точку спереди, которая обозначает скрытый файл, и поэтому папка не отображается в строках PATH.

NewDev
источник
0

"; C: \ Program Files \ Java \ jdk1.6.0 \ bin" иногда вы можете забыть поставить точку с запятой на последнем существующем пути.

Сундараджан Васуван
источник
0

Я столкнулся с той же проблемой, что java будет работать, но javac не будет в командной строке в Windows 8.

Проблема возникла из-за того, что я забыл удалить '>'в конце имени пути, то есть было так:

C:\Program Files\Java\jdk*\bin>

где это должно было быть так:

C:\Program Files\Java\jdk*\bin
Kevin
источник
0

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


источник
0

Убедитесь, что вы не допускаете пробелов (пробелов) между путями в переменной Path. Моя проблема заключалась в том, что у меня было пустое пространство, и я считаю, что Windows рассматривала его как NULL и не считывала мой путь для Java.

TRHUMMEL
источник
0

У меня была такая же проблема, указанная в этом заголовке. Java будет работать, но javacне в командной строке Windows (cmd.exe ).

Для меня это было просто, что я поставил пробел при добавлении C:\Program Files\Java\jdk1.8.0\binв конец моей %PATH%переменной окружения.
Удалите пробел между ;и следующим путем к файлу.

Taiton
источник
0

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

В моем случае предыдущая установка Java JRE (в ProgramData / Oracle / Java) имела переменную пути вверху моего списка переменных пути. В содержимом этого пути "Oracle" был java.exe, но не javac.exe. Я добавил свой полный путь JDK в верхнюю часть списка переменных пути перед «Oracle», а затем он выбрал javac.exe и java.

Нил
источник
0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

это решение сработало для меня

Кристиан Агудело
источник
Я бы посоветовал добавить больше аннотаций к вашему ответу, а не просто указать ссылку: ссылка может сломаться. С уважением
ЯковЛ 02
-3

Когда я попытался сделать .java для .class, команда Javac не сработала. Я запустил его, перейдя в C: \ Program Files (x86) \ Java \ jdk1.7.0_04 \ bin и, находясь в этом каталоге, набрал Javac.exe C \ Test \ test.java, и он создал класс с этим тактика. Попробуйте это.

Кто то
источник
-7

Представьте его как «C: \ Program Files \ Java \ jdk1.6.0_16 \ bin». Уберите обратную косую черту, это будет работать

Valli
источник
2
Я не думаю, что это правильно. Я могу указать путь к «C: \ Program Files \ Java \ jdk1.6.0_16 \ bin \» (с косой чертой), и он по-прежнему работает нормально.
paxdiablo