В чем разница между "system32\java.exe" и "Program Files\Java\jdk1.6.0_33\bin\java.exe"?
Я только что установил 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:
1. C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2. C:\WINDOWS\system32\java.exe
Могу ли я узнать, в чем разница между system32\java.exe
и Program Files\Java\jdk1.6.0_33\bin\java.exe
? Почему только system32\java.exe
отображается, когда я запускаю for %i in (java.exe) do @echo. %~$PATH:i
?
Нужно ли еще добавить C:\Program Files\Java\jdk1.6.0_33\bin\
в переменную среды PATH?
Ответы
Ответ 1
Настройка переменной PATH
заключается только в том, чтобы вы могли получить доступ к javac
, а также к другим программам и инструментам в папке bin jdk.
java.exe
в \windows\system32\
предоставляется так, чтобы не всем нужно было устанавливать переменную PATH только для запуска java-программы (из командной строки) и выбирает версию (последняя как установлено) установленных Java-виртуальных машин (JVM), если установлено более одного (публично).
Смотрите эту ссылку для получения дополнительной информации:
http://mindprod.com/jgloss/javaexe.html#MULTIPLES
Цитата:
Чтобы усложнить ситуацию, java.exe в system32 является просто манекеном. Он выглядит в реестре и затем решает, какой настоящий java.exe использовать. Последний установленный JVM получает тот, который используется, даже если он старше. Чтобы переключить JVM, вы должны, как правило, переустановить тот, который вам нужен.
Ответ 2
(Не ответ, а комментарий к Маттиасу)
Не уверен в этом бизнесе "dummy". 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\masquerading как C:\Windows\System32. Установщик не может поместить копию java.exe в SysWoW64, поэтому 32-разрядное приложение, которое пытается запустить Java, не сможет этого сделать. Это вызовет у пользователя проблему, если он будет выглядеть в каталоге system32 с помощью explorer, так как explorer - это 64-битное приложение и, таким образом, увидит "реальный" каталог system32.