Настройка JVM через командную строку в Windows - PullRequest
24 голосов
/ 23 марта 2009

Можно ли указать JVM для использования при вызове "java jar jar_name.jar". У меня установлено два JVM на моей машине. Я не могу изменить JAVA_HOME, так как это может нарушить готовый код.

С уважением

Стивен

Ответы [ 4 ]

45 голосов
/ 23 марта 2009

Да - просто явно укажите путь к java.exe. Например:

c:\Users\Jon\Test>"c:\Program Files\java\jdk1.6.0_03\bin\java.exe" -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)

c:\Users\Jon\Test>"c:\Program Files\java\jdk1.6.0_12\bin\java.exe" -version
java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)

Самый простой способ сделать это для работающей командной оболочки - это что-то вроде:

set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH%

Например, вот полный сеанс, показывающий мою JVM по умолчанию, затем изменение пути, затем новый:

c:\Users\Jon\Test>java -version
java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)

c:\Users\Jon\Test>set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH%

c:\Users\Jon\Test>java -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)

Это не изменит программы, которые явно используют JAVA_HOME.

Обратите внимание, что если вы укажете неправильный каталог в пути - включая тот, который не существует - вы не получите никаких ошибок, он будет просто проигнорирован.

2 голосов
/ 23 марта 2009

Это можно сделать с помощью аргументов командной строки, если предположить, что это виртуальные машины Sun, установленные с использованием обычных механизмов Windows InstallShield с EXE-искателем JVM в system32 .

Введите java -help для параметров. В частности см .:

-version:<value>
              require the specified version to run
-jre-restrict-search | -jre-no-restrict-search
              include/exclude user private JREs in the version search
0 голосов
/ 09 сентября 2017

Если у вас есть 2 установки JVM. Поместите версию заранее. Linux: экспорт PATH = / usr / lib / jvm / java-8-oracle / bin: $ PATH

Это устраняет двусмысленность.

0 голосов
/ 21 января 2015

да мне часто нужно иметь 3 или более JVM. Например, я заметил, что иногда JRE немного отличается от JDK-версии JRE.

Мой переход к Windows для небольшого количества «упаковки» выглядит примерно так:

@echo off
setlocal
@rem  _________________________
@rem
@set  JAVA_HOME=b:\lang\java\jdk\v1.6\u45\x64\jre
@rem
@set  JAVA_EXE=%JAVA_HOME%\bin\java
@set  VER=test
@set  WRK=%~d0%~p0%VER%
@rem
@pushd %WRK%
cd 
@echo.
@echo  %JAVA_EXE%  -jar %WRK%\openmrs-standalone.jar
       %JAVA_EXE%  -jar %WRK%\openmrs-standalone.jar 
@rem
@rem  _________________________
popd
endlocal
@exit /b

Я думаю, это просто. Главное, что setlocal и endlocal дают вашему приложению «персональную среду» для всего, что он делает, даже если есть другие программы для запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...