在Windows上通过命令行设置JVM

当调用“java jar jar_name.jar”时,是否可以指定使用JVM? 我的机器上安装了两个JVM。 我无法更改JAVA_HOME,因为它可能会破坏所有已准备好运行的代码。

亲切的问候

斯蒂芬

是的 – 只是明确提供了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) 

运行命令shell最简单的方法就是:

 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的程序。

请注意,如果路径中包含错误的目录(包括不存在的目录),则不会出现任何错误,只会被忽略。

您应该可以通过命令行参数来执行此操作,假定这些是使用通常的Windows InstallShield机制在system32中使用JVM查找程序EXE安装的Sun VM。

输入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 

如果您有2个JVM安装。 预先放置版本。 Linux:export PATH = / usr / lib / jvm / java-8-oracle / bin:$ PATH

这消除了歧义。

是的,我经常需要安装3个或更多的JVM。 例如,我注意到有时JRE与JRE的JDK版本稍有不同。

我在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为您的应用程序提供一个“个人环境”,即使有其他程序可以运行。

用Linux试试这个

 sudo update-alternatives --config java