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.


11
Ага так, все, що я повинен був зробити, це повторно відкрити командний рядок, і воно спрацювало чудово, дякую!
Доменіч

1
+1. Щойно "врятував мій день" "для% i in (java.exe) do @echo% ~ $ PATH: i". Я просто випадковий користувач Windows, і я просто не знав, що може бути ще один прихований java.exe в c: \ windows \ system :)
david a.

1
Наведена вище команда шляху не працює для мене під Windows 7. Мені довелося використовувати set path = "% path%; c: \ програмні файли \ java \ jdk1.6.0_16 \ bin. Це без лапок! Я не знайомий з командним рядком Windows, але здається, що котирування збереглися, тому наявність їх у% path% зробить це абсолютно непридатним.
user716468

@ user716468, Існує спосіб GUI зробити це у Windows замість командного рядка. Якщо ви перебуваєте у Windows 7, просто введіть var у меню запуску та натисніть кнопку Змінити змінні середовища. Якщо ви перебуваєте в ОС Windows XP, клацніть правою кнопкою миші Мій комп'ютер, Клацніть на властивості, перейдіть на вкладку "Додаткові" та натисніть кнопку Змінні середовища в нижній частині. Там ви можете знайти два списки. Дізнайтеся одну з ім'ям PATH з нижнього списку та натисніть кнопку Редагувати. Тепер додайте шлях до вашого JDK, який передує крапкою з комою. Ви закінчили!
fz_salam

також є команда "де" в останніх командних рядках Windows
x29a

87

ОС 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:

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

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

  3. У "Змінні системи" прокрутіть вниз, щоб вибрати "PATH" ⇒ Редагувати

((читайте наступні 3 рази, перш ніж продовжувати, НЕ МОЖЕ )

У полі "Змінне значення" INSERT "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

Працює для мене :)
RAJESH KUMAR ARUMUGAM

34

Після довгого пошуку в Google я дізнався, що javac.exe буде знаходитися всередині JDK (C: \ програмні файли \ Java \ jdk (номер версії) \ bin) не всередині JRE (C: \ Program Files (x86) \ Java \ jre7 \ bin) "JRE не постачається з компілятором. Це (JRE) - просто середовище виконання Java. Вам потрібен комплект для розробки Java." для того, щоб використовувати компілятор javac

javac не працюватиме, якщо ви вкажете бін всередині jre

Для того, щоб використовувати javac у cmd, у вашій системі необхідно встановити JDK ...

Для шляху javac

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

path = 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?


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, подібного до цього, мені довелося використовувати "встановити PATH =% PATH%;% JAVA_HOME% \ bin" (зверніть увагу на доданий \ bin).
користувач31389

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.


0

"; C: \ Program Files \ Java \ jdk1.6.0 \ bin" коли-небудь ви можете забути поставити крапку з комою на останньому існуючому шляху.


0

Я зіткнувся з точно такою ж проблемою, що java буде працювати, але javac не буде працювати на cmd-підказці в Windows 8.

Проблема виникла через те, що я забув видалити '>'в кінці назви шляху, тобто було так:

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

де, мабуть, бути таким:

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

0

Шлях буде встановлений лише для облікового запису адміністратора. Тому важливо запустити командний рядок як адміністратор, якщо ви ще цього не зробили.


0

Переконайтеся, що ви не допускаєте пробілів (пробіл) між шляхами змінної Path. Моя проблема полягала в тому, що у мене був пробіл, і я вважаю, що Windows трактувала це як NULL і не читала мій шлях до Java.


0

У мене була та сама проблема, розміщена в цьому заголовку. Java буде працювати, але javacне в командному рядку Windows ( cmd.exe).

Для мене було просто те, що я помістив пробіл, додавши C:\Program Files\Java\jdk1.8.0\binдо кінця %PATH%мінливої ​​середовища.
Видаліть пробіл між наступним ;і наступним шляхом до файлу.


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

це рішення працювало на мене


Я б запропонував додати більше приміток до вашої відповіді безпосередньо, а не просто надати посилання: посилання може розірватися. З найкращими побажаннями
YakovL

-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". Зніміть зворотну косу рису, вона спрацює


2
Я не думаю, що це правильно. Я можу встановити, що мій шлях є не що інше, як "C: \ Program Files \ Java \ jdk1.6.0_16 \ bin \" (з останньою косою рисою), і він все ще працює чудово.
paxdiablo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.