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

Различные версии Java, отображаемые в командной строке

Я недавно проверил мою версию Java. Я выполнил команду java -version, и я узнал, что использовал java version 1.7.0_09. Но когда я попытался проверить каталог C:\Program Files\Java\, я, похоже, не нашел ту же версию. Я вижу только следующее:

  • j2re1.4
  • jdk1.6.0_32
  • jdk1.7.0_06
  • jdk1.7.0_07
  • jre6
  • jre7

И так далее...

Мои программы все еще выполняются, но я просто пытаюсь скомпилировать все вручную и понять, как Java обрабатывается ОС.

Еще одна вещь, которая является странной, я попытался проверить настройки переменных среды и ничего не сказал о jdk1.7.0_09.

Путь:

  • C:\Program Files\Common Files\Microsoft Shared\Windows Live;
  • % SystemRoot%\system32;
  • % SystemRoot%;
  • % SystemRoot%\System32\Wbem;
  • % SYSTEMROOT%\System32\WindowsPowerShell\v1.0 \;
  • C:\Program Files\TortoiseSVN\bin;
  • C:\Program Files\Windows Live\Shared;
  • C:\затмение\Plugins\com.google.appengine.eclipse.sdkbundle_1.6.5\AppEngine-ява-СДК-1.6.5\Bin;
  • C:\Program Files\Java\jdk1.7.0_07\bin; C:\Program Files\QuickTime\QTSystem \;
  • % ANT_HOME%\Bin

Просто хочу, чтобы вы, ребята, знали, что это как-то автоматически превратилось в jre.

Полный каталог C:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09, и он просто получил файл с именем lzma.dll.

Но у меня есть другой каталог, который говорит C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07. Файлы внутри него:

  • jdk1.7.0_07.msi
  • sj170070.cab
  • ss170070.cab
  • st170070.cab
  • и sz170070.cab
4b9b3361

Ответ 1

Возможно, на компьютере много бок о бок.

Если JRE правильно установлена ​​в Windows, информация о каждой версии сохраняется в реестре. Процесс установки устанавливает специальный java.exe в системе PATH (% SYSTEMROOT%\System32). Поэтому вам не нужно изменять PATH, потому что этот специальный java.exe найдет текущую JRE. Из командной строки введите java -version, чтобы отобразить текущую версию jre.

С выпуском 1.6 теперь можно выбрать другую установку JRE, чем последняя, ​​без изменения реестра.

Установка JRE указана в реестре в ключе

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

Возьмем этот простой класс тестов

public class ShowVersion {
 public static void main(String args[]) {
   System.out.println(System.getProperty("java.version"));
 }
}

В системе с установленными 1.6 и 1.5. Если вы наберете

> java ShowVersion

Вероятно, это 1,6 JRE, которая будет использоваться с момента последней установки.

Чтобы принудительно использовать 1,5 JRE, используйте эту командную строку.

> java -version:"1.5" ShowVersion

Если байт-код несовместим с данным JRE, то это, конечно, не сработает.

ref: technote java 6

Вы всегда можете указать полный путь к использованию конкретной установки. Запуск JVM таким образом вообще не использует настройку реестра.

>"C:\Program Files\Java\j2re1.4.1_02\bin\java" -version
java version "1.4.1_02"

source: Выберите конкретную JRE из командной строки

Ответ 2

В ответ на "актуальный" вопрос:

Еще одна вещь, которая является странной, я пытался проверить окружающую среду переменные настройки, и он ничего не говорит о jdk1.7.0_09.

Что здесь произошло, так это то, что вы установили jdk1.7.0_07, а затем его автоматически обновили. Когда это произойдет, оно по-прежнему использует имя старой папки, на которое вы первоначально установили.

После установки Java я обычно делаю копию каталога JDK и назову его номером версии. Затем я могу напрямую вызвать определенную java так:

@echo off
:: testjava.bat
set JAVA_HOME=C:\JDK1.x.xx
set PATH=%JAVA_HOME%\bin;%PATH%;.
java -version
pause

Итак, моя рекомендация - установить системную переменную JAVA_HOME и переменную PATH, как показано выше. Это заменит все на вашей системе, чтобы ваш JDK по вашему выбору был по умолчанию по JRE.

Ответ 3

Этот AppData путь в вашем комментарии не на вашем пути (предположительно, так или иначе), так что, вероятно, не то, что он использует. К сожалению, в Windows нет команды which.

Если вы отредактируете свой путь и переместите каталог C:\Program Files\Java\bin в самое начало списка, и он все еще печатает 1.7.0_09, тогда у вас есть JDK7u9 в вашей папке JDK7u7. Если нет, просмотрите все остальные каталоги на своем пути и откройте их 1 на 1, пока не найдете соответствующий файл java. К счастью для вас, ваш путь намного короче моего.

Обратите внимание, что при выполнении:

> java -version

Он также может искать расширения java.bat и другие расширения exe, поэтому следите за этим, пока вы ищете свой путь. Попробуйте запустить:

> java.exe -version

Таким образом, вы знаете, что ищете файл exe.

Последнее, что вы можете попробовать:

> "C:\Program Files\Java\jdk1.7.0_07\bin\java" -version

Если это возвращает 1.7.0_09, произошло что-то, что обновило ваш JDK на месте, что не должно происходить, AFAIK (но я мог ошибаться).

Ответ 4

Добавление следующего решения проблемы:

set JAVA_HOME="your jdk path"
set PATH=%JAVA_HOME%\bin;%PATH%.

Кроме того, если он не работает, значит, вы установили PATH для нескольких версий Java, включите только последнюю версию и удалите все из переменных PATH.