Я не могу скомпилировать какие-либо Java-программы после того, как PowerShell заменил командную строку в меню файлов во время обновления Windows. Я попытался использовать ту же команду SET PATH
, что и в командной строке (set path = c:\"Program Files"\Java\jdk1.8.0_102\bin
). Команда java
работала, а javac
не распознавалась.
Узнав, как получить доступ к командной строке (введите «CMD» в поле поиска в левом нижнем углу), я предположил, что все будет работать как обычно, но я ошибся. Команда javac
КАЖЕТСЯ работает. Он помечал ошибки, когда я впервые пытался скомпилировать. После исправления ошибок я думал, что компилировал без ошибок. Когда я попытался запустить свою «только что скомпилированную» программу, я заметил, что мои новые изменения не отображаются! Я обнаружил, что, несмотря на то, что он компилировался, новые файлы CLASS не создавались. (Это были старые файлы CLASS, которые запускались.)
Затем мне посоветовали убедиться, что я администратор. Я сделал это с помощью PowerShell и командной строки, но это не имело никакого значения.
Пробовал переустанавливать Java - тоже ничего не изменилось.
Вот что происходит, когда я компилирую от имени администратора из командной строки:
C:\Users\penny\Java>Set Path=C:\"Program Files"\Java\jdk1.8.0_131\bin
C:\Users\penny\Java>javac FoodCount.java
C:\Users\penny\Java>java FoodCount
Error: Could not find or load main class FoodCount
Он компилируется (или кажется), но файл класса не создается. И да, файл javac.exe НАХОДИТСЯ в bin-файле:
C:\Program Files\Java\jdk1.8.0_131\bin>dir javac.exe Volume in drive C is Windows Volume Serial Number is 7040-4F22 Directory of C:\Program Files\Java\jdk1.8.0_131\bin 07/12/2017 11:48 PM 15,904 javac.exe 1 File(s) 15,904 bytes 0 Dir(s) 838,527,008,768 bytes free
Вот что произошло, когда я воспользовался предложением из одного из комментариев для PowerShell. (Это было до того, как я переустановил Java, поэтому версия немного другая. После переустановки результат был точно таким же.)
PS C:\Users\penny\Java> $env:PATH += ';c:\Program Files\Java\jdk1.8.0_102\bin' PS C:\Users\penny\Java> javac FoodCount.java javac : The term 'javac' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + javac FoodCount.java + ~~~~~ + CategoryInfo : ObjectNotFound: (javac:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS C:\Users\penny\Java>
Подводя итог, я, похоже, смог выполнить компиляцию с помощью javac.exe из командной строки, но после этого в моем каталоге не удается найти новый файл класса. Я вообще не могу заставить PowerShell распознать javac.exe.
Кто-нибудь может сказать мне, что происходит? Я думаю, должно быть что-то с разрешениями, но быть администратором, похоже, недостаточно.
set
— это псевдоним командлетаSet-Variable
в PowerShell, которому вы должны передать имя переменной и значение в виде отдельных аргументов (Set-Variable <name> <value>
). Напротив, если вы сделаете что-то вродеset path=c:\"Program Files"\Java\jdk1.8.0_102\bin
, вы получите неинициализированную переменную, буквально названнуюpath=c:\"Program Files"\Java\jdk1.8.0_102\bin
(если вы поместите пробелы вокруг=
, как в настоящее время в вашем вопросе, вы получите синтаксическую ошибку). - person mklement0   schedule 13.07.2017PATH
, вам нужно указать PowerShell, что вы хотите изменить переменную environment, а не переменную PowerShell, поэтому то, что вы ищете, это что-то вроде$env:PATH += ';c:\Program Files\Java\jdk1.8.0_102\bin'
- person mklement0   schedule 13.07.2017Command Prompt
в вашем контексте и менюwin+x
, см. Восстановление командной строки после обновления Creators - person David C. Rankin   schedule 13.07.2017javac.exe
действительно находится вc:\Program Files\Java\jdk1.8.0_102\bin
. - person Ansgar Wiechers   schedule 13.07.2017regedit
. Простым отказоустойчивым способом является резервное копирование ключа перед его изменением (просто щелкните правой кнопкой мыши ключ или ветку, удерживающую ключ) и выберитеexport
, чтобы сохранить текущие настройки в виде файла.reg
. Затем внесите изменения. Если вы хотите вернуться к настройкам по умолчанию, просто дважды щелкните сохраненный файл.reg
. Простой. - person David C. Rankin   schedule 13.07.2017