javac не работает в командной строке windows

<p>я пытаюсь использовать <code>javac</code> с командой windows prompt, но она не работает.</p><p>после добавления каталога <code>"c:\program files\java\jdk1.6.0\_16\bin\"</code> в конец переменной среды <code>path</code> команда <code>java</code> работает нормально, но использование <code>javac</code> выдает следующую ошибку:</p><blockquote> <p>«javac» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.</p> </blockquote>

<p>если вы добавили его в панель управления, когда ваша командная строка была открыта, это не повлияет на текущую командную строку. вам нужно выйти и снова открыть или просто сделать:</p><pre><code>set "path=%path%;c:\program files\java\jdk1.6.0\_16\bin" </code></pre><p>для проверки выполните:</p><pre><code>echo %path% </code></pre><p>от вашей команды подскажите и дайте нам знать, что это такое.</p><p>в противном случае убедитесь, что в этом каталоге находится<em> is </em>javac, выполнив:</p><pre><code>"c:\program files\java\jdk1.6.0\_16\bin\javac.exe" </code></pre><p>из командной строки. вы также можете указать<em> который </em>исполняемый файл (если есть) используется с командой:</p><pre><code>for %i in (javac.exe) do @echo %~$path:i </code></pre><p>это хитрый прием, похожий на команды <code>which</code> и/или <code>whence</code> в некоторых операционных системах типа unix.</p>

<p>ос windows выполняет поиск текущего каталога и каталогов, перечисленных в переменной среды path, для поиска исполняемых программ. программы jdk (такие как java-компилятор javac.exe и java runtime java.exe) находятся в каталоге "\ bin" (где обозначает установленный каталог jdk, например, c:\program files\java\jdk1.8.0\_xx). вам необходимо включить каталог «\ bin» в path.</p><p>чтобы изменить переменную среды path в windows xp/vista/7/8:</p><ol> <li><p>панель управления → система → расширенные настройки системы</p></li> <li><p>перейти на вкладку «дополнительно» → переменные среды</p></li> <li><p>в «системных переменных» прокрутите вниз, чтобы выбрать «путь» → «редактировать».</p></li> </ol><p>((теперь прочитайте следующие 3 раза, прежде чем продолжить,<strong> там is нет отмены </strong>))</p><p>в поле «значение переменной» вставьте «c:\program files\java\jdk1.8.0\_xx\bin» (замените xx номером обновления и проверьте, что это двоичный каталог вашего jdk !!!) в перед всеми существующими каталоги, за которыми следует точка с запятой (;), которая отделяет двоичный каталог jdk от остальных существующих каталогов . не удалять существующие записи; в противном случае некоторые существующие приложения могут не работать.</p><pre><code>variable name : path variable value : c:\program files\java\jdk1.8.0\_xx\bin;[existing entries...] </code></pre><p><img src="https://i.stack.imgur.com/7jqlf.png" alt="screenshot "></p>

<p>после долгого google я узнал, что javac.exe должен быть внутри <strong>jdk</strong> (c:\program files\java\jdk (номер версии)\bin), а не внутри <strong>jre</strong> ( c:\program files (x86)\java\jre7\bin) <strong>"jre не поставляется с компилятором. это (jre) просто среда выполнения java. что вам нужно, так это комплект разработки java."</strong> чтобы использовать компилятор javac</p><p>javac не будет работать, если вы указываете бин внутри jre</p><p>чтобы использовать javac в cmd, в вашей системе должен быть установлен jdk ...</p><p><strong>для пути javac</strong></p><p><strong>path = c:\program files (x86)\java\jre7\bin</strong> это неправильно </p><p><strong>path = c:\program files\java\jdk (номер версии)\bin</strong> это правильно</p><p>убедитесь, что "javac.exe" находится внутри вашего <strong>"c:\program files\java\jdk (номер версии)\bin"</strong></p><p>не путайте с jre и jdk, оба совершенно разные </p><p>если у вас нет jdk, пожалуйста, скачайте по этой ссылке <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a> </p><p>эталонная нить для jdk vs jre <a href="https://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre">в чем разница между jdk и jre?</a> </p>

<p>я знаю, что это может быть не вашей конкретной ошибкой, но когда-то у меня был начальный пробел на моем пути, и java работала бы, а javac - нет. </p><p>для чего бы это ни стоило, я предлагаю мудрый совет: «внимательно изучите свой путь».</p>

<p>попробуйте решения здесь: <a href="http://techdem.centerkey.com/2009/05/javahome-command-script.html">http://techdem.centerkey.com/2009/05/javahome-command-script.html</a> </p><p>их гораздо надежнее изменить - например, при обновлении jdk или jre, поскольку нет жестко закодированного пути.</p><p>быстрое решение (если вы не хотите читать блог)</p><pre><code>c:\>for /d %i in ("\program files\java\jdk*") do set java\_home=%i c:\>set path=%path%;%java\_home% </code></pre><p>затем вы можете добавить эти строки в скрипт запуска/входа в систему.</p>

<p>я просто должен был сделать это, чтобы заставить это работать на windows 7 64.</p><p>откройте командную строку (cmd.exe) и введите:</p><pre><code>set classpath=c:\program files\java\jdk1.7.0\_01\bin </code></pre><p>убедитесь, что вы снова открыли все запущенные командные строки windows, чтобы обновить переменную среды.</p>

<p>хорошо, это не может быть всегда, но многие из нас делали эту ошибку в прошлом, и немногие из них все еще не знают об этом, то есть каждый раз, когда вы добавляете путь (любой путь) к любой переменной среды, вы вы, вероятно, попадете на пробел сразу после «точки с запятой» (как обычно, после «точки» при вводе в редакторе). </p><p>это создаст начальный пробел в пути, например, «c:\program files\java\jdk1.6.0\bin», и, следовательно, «javac.exe» не будет найден системой.</p>

<p>измените папку «jdk1.7.0\_45» на «jdk1\_7\_0\_60» и обновите путь в среде windows. в противном случае путь игнорирует точку спереди, которая обозначает скрытый файл, поэтому папка не отображается в строках path.</p>

<p>убедитесь, что вы не допускаете пробелы (пробелы) между путями в переменной path. моя проблема заключалась в том, что у меня было пустое пространство, и я считаю, что windows воспринимала его как null и не читала мой путь для java.</p>

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

<p>я ценю, что это старый вопрос сейчас, но мое решение не было здесь ответа, поэтому публикуем его на тот случай, если кто-то попробует все остальное.</p><p>в моем случае предыдущая установка java jre (в programdata/oracle/java) имела переменную пути в верхней части моего списка переменных пути. содержимое этого пути «oracle» содержало java.exe, но не javac.exe…. я добавил свой полный путь jdk в начало списка переменных пути, перед «oracle», и затем подобрал javac.exe так же как и java.</p>

<pre><code>for /d %i in ("\program files\java\jdk*") do set java\_home=%i set java\_home </code></pre><p> <a href="http://blog.centerkey.com/2009/05/javahome-command-script.html">это</a> решение сработало для меня</p>

<p>у меня была такая же проблема, опубликованная в этом заголовке. java будет работать, но <code>javac</code> не будет в командной строке windows (<code>cmd.exe</code>).</p><p>для меня это было просто то, что я добавил пробел при добавлении <code>c:\program files\java\jdk1.8.0\bin</code> в конец моей переменной окружения <code>%path%</code>.<br> удалить пробел между <code>;</code> и следующим путем к файлу.</p>

<p>я столкнулся с той же самой проблемой, что java будет работать, но javac не будет на командной строке в windows 8.</p><p>проблема произошла, потому что я забыл удалить <code>'>'</code> в конце имени пути, то есть это было так:</p><pre><code>c:\program files\java\jdk*\bin> </code></pre><p>где это должно было быть так:</p><pre><code>c:\program files\java\jdk*\bin </code></pre>