【发布时间】:2010-10-15 01:33:33
【问题描述】:
是否可以指定调用“java jar jar_name.jar”时使用的JVM。我的机器上安装了两个 JVM。我无法更改 JAVA_HOME,因为它可能会破坏已准备好运行的代码。
亲切的问候
斯蒂芬
【问题讨论】:
标签: java windows command-line jvm
是否可以指定调用“java jar jar_name.jar”时使用的JVM。我的机器上安装了两个 JVM。我无法更改 JAVA_HOME,因为它可能会破坏已准备好运行的代码。
亲切的问候
斯蒂芬
【问题讨论】:
标签: java windows command-line jvm
是的 - 只需明确提供 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 机制安装的 Sun VM,并带有 system32 中的 JVM finder EXE。
键入 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:导出 PATH=/usr/lib/jvm/java-8-oracle/bin:$PATH
这消除了歧义。
【讨论】: