Различные версии 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
Ответы
Ответ 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
.