Я только что установил Java JDK 6u33 в Windows XP. Несмотря на то, что я не установил переменную окружения PATH, я могу запустить java -version
в командной строке.
Когда я выполняю эту команду for %i in (java.exe) do @echo. %~$PATH:i
, я получаю следующее сообщение:
C:\WINDOWS\system32\java.exe
.
Когда я проверил свой компьютер, я обнаружил, что есть 2 java.exe:
C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
C:\WINDOWS\system32\java.exe
Могу ли я узнать, в чем разница между system32\java.exe
и Program Files\Java\jdk1.6.0_33\bin\java.exe
? Почему когда я запускаю команду for %i in (java.exe) do @echo. %~$PATH:i
?
Нужно ли мне добавить C:\Program Files\Java\jdk1.6.0_33\bin\
в переменную окружения PATH?
Установка переменной PATH
необходима для того, чтобы вы могли получить доступ к javac
и другим программам и инструментам в папке jdk bin.
java.exe
в \windows\system32\
предоставляется для того, чтобы не всем нужно было устанавливать переменную PATH только для запуска java-программы (из командной строки) и выбирает версию (последнюю установленную, как кажется) установленных виртуальных машин java (JVM), если их установлено более одной (публично).
См. эту ссылку для получения дополнительной информации:
http://mindprod.com/jgloss/javaexe.html#MULTIPLES
Цитата:
Для дальнейшего усложнения ситуации java.exe в system32 является просто пустышкой. Он смотрит в реестре и затем решает, какой настоящий java.exe использовать. Используется последняя установленная JVM, даже если она старше. Чтобы сменить JVM, обычно нужно переустановить ту, которая вам нужна.
(Не ответ, а скорее комментарий к ответу Mattias') Не уверен насчет этой "пустышки". java.exe в system32 - это обычный файл, даже не символическая или жесткая ссылка. Возможно, Маттиас имеет в виду проблему, которая описана здесь: http://msdn.microsoft.com/en-us/library/aa384187.
В двух словах, если у вас 64-битная система и установлена Java, 32-битные приложения не увидят java.exe (ни javaw.exe, ни javaws.exe), установленный в C:\Windows\System32\, потому что им будет представлен C:\Windows\SysWoW64\, маскирующийся под C:\Windows\System32. Программа установки не помещает копию java.exe в SysWoW64, поэтому 32-битное приложение, пытающееся запустить Java, не сможет этого сделать. Это озадачит пользователя, если он заглянет в каталог system32 с помощью проводника, так как проводник является 64-битным приложением и поэтому увидит "настоящий" каталог system32.