繁体   English   中英

在Windows上通过命令行设置JVM

[英]Setting the JVM via the command line on Windows

是否可以指定在调用“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 finder 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

是的我经常需要安装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为你的应用程序提供了一个“个人环境”,即使有其他程序可以运行。

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

这消除了歧义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM