使用特定jvm在具有多个jvm的机器上运行java代码的正确方法

使用特定jvm在具有多个jvm的机器上运行java代码的正确方法,java,environment-variables,Java,Environment Variables,我在一台pc上有多个jvm,现在我想使用一个特定的jvm运行java代码,我该怎么做? 是的 set JAVA_HOME=C:\special\jre\bin\jvm.dll 但它似乎不像之前或之后那样工作,当我使用java版本时,我总是得到相同的,当前安装的java Microsoft Windows [Version 10.0.17763.1098] (c) 2018 Microsoft Corporation. All rights reserved. C:\W

我在一台pc上有多个jvm,现在我想使用一个特定的jvm运行java代码,我该怎么做? 是的

set JAVA_HOME=C:\special\jre\bin\jvm.dll
但它似乎不像之前或之后那样工作,当我使用java版本时,我总是得到相同的,当前安装的java

    Microsoft Windows [Version 10.0.17763.1098]
    (c) 2018 Microsoft Corporation. All rights reserved.

    C:\Windows\System32>java -version
    java version "1.8.0_241"
    Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
    Java HotSpot(TM) Client VM (build 25.241-b07, mixed mode, sharing)

    C:\Windows\System32>
我希望,一旦我将java_设置为home,它应该与特定的jvm一起工作? 我知道我在这里犯了一些小错误,能有人来指导吗? 提前感谢

如果您以

C:\special\jre\bin java -version //desired vesrion
您需要设置一个PATH变量

JAVA_SPECIAL_HOME = C:\special\jre\
作为,

%JAVA_SPECIAL_HOME%\bin\java

PATH是一个特殊变量,指向windows可以找到可执行文件的文件夹(不一定是java,但在本例中是java)。因此,如果路径中有Java10,打开
cmd
并键入
java-version
,您将看到Java10。 如果您有许多带有“java.exe”的文件夹,则会启动第一个出现的文件夹

相反,JAVA_HOME与Windows无关-这是一种“约定”-许多其他程序(如IDE)可以假设,如果您有一个名为
JAVA_HOME
-的环境变量,它应该指向JDK安装,就是这样

因此,如果您在同一台计算机上安装了多个JVM,则必须显式地指向您选择的
jdk/jre
的bin/java.exe。这可以通过使用JAVA_HOME或不使用JAVA_来完成

在我的个人windows系统上(我使用许多Java安装),我通常定义以下内容(我假设所有jdk-s都安装在文件夹“Java”中,它可以是程序文件或其他任何内容):


JAVA\u 8\u HOME=C:\JAVA\jdk8

JAVA\u 9\u HOME=C:\JAVA\jdk9

JAVA\u HOME=%JAVA\u 14\u HOME%

路径=…%JAVA\u HOME%\bin

默认情况下,我希望使用Java14作为示例,但我将来可以切换默认值。为此,我将编辑JAVA_HOME定义并将其指向另一个JAVA


现在我想用默认的java运行一些东西(在大多数情况下应该是可以的)-我根本不考虑这个问题-只需运行
java-jarmyjar.jar


如果我想要一些特定的java(例如java 8),我可以在命令行中键入“java”时执行
%java\u 8\u HOME%\bin\java-jar Myjar.jar

,它是使用PATH变量定位的,而不是java\u HOME。谢谢,我如何指向特定的JVm来运行我的代码?