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

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

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

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

Ответ 1

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

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.

Ответ 2

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

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

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

  • Перейдите на вкладку "Дополнительно" ⇒ Переменные среды

  • В "Системные переменные" прокрутите вниз, чтобы выбрать "PATH" ⇒ Edit

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

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

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

Screenshot

Ответ 3

После долгого 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, пожалуйста, скачайте по этой ссылке http://www.oracle.com/technetwork/java/javase/downloads/index.html

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

Ответ 4

Я знаю, что это может быть не ваша конкретная ошибка, но у меня когда-то было ведущее место на моем пути, и 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%

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

Ответ 6

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

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

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

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

Ответ 7

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

Это создаст ведущее пространство в пути, например "C:\Program Files\Java\jdk1.6.0\bin", и поэтому "javac.exe" не будет найден системой.

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

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

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

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

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

Ответ 12

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

Ответ 13

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

Ответ 14

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

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

Ответ 15

for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

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

Ответ 16

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

Ответ 17

Дайте ему "C:\Program Files\Java\jdk1.6.0_16\bin". Удалите обратную косую черту, она будет работать