Подтвердить что ты не робот

В чем разница между "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?

4b9b3361

Ответ 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.