简体   繁体   English

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

[英]correct way to use specific jvm to run java code on machine that has multiple jvms

I have a situation where I have multiple jvms on a pc.我有一种情况,我在一台电脑上有多个 jvm。 Now I want to run java code using a specific jvm, how do I do that?现在我想使用特定的 jvm 运行 java 代码,我该怎么做? I did do我确实做到了

set JAVA_HOME=C:\special\jre\bin\jvm.dll

but it doesn't seem to work as before or after when I do java -version, I always get the same, currently installed java eg但是当我执行 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>

where as I am hoping that once I do the set java_home, it should work with that specific jvm?我希望一旦我设置了 java_home,它应该与特定的 jvm 一起工作? I know I am making some trivial mistake here, can some one please guide?我知道我在这里犯了一些小错误,有人可以指导吗? Thanks in advance提前致谢

If you run as,如果你运行,

C:\special\jre\bin java -version //desired vesrion

You need to set a PATH variable,您需要设置一个 PATH 变量,

JAVA_SPECIAL_HOME = C:\special\jre\

And run as,并运行为,

%JAVA_SPECIAL_HOME%\bin\java

PATH is a special variable that points on a folder where windows can find the executable file (not necessarily java, but java in this case). PATH是一个特殊变量,它指向 windows 可以找到可执行文件的文件夹(在这种情况下不一定是 java,而是 java)。 So if you have, say, java 10 in the path, open up cmd and type java -version - you'll see java 10. If you have many folders with "java.exe" - the one that appears first will be launched. So if you have, say, java 10 in the path, open up cmd and type java -version - you'll see java 10. If you have many folders with "java.exe" - the one that appears first will be launched.

JAVA_HOME , on the contrary, has nothing to do with Windows - its a "convention" - many other programs (like IDEs) can assume that if you have an environment variable called JAVA_HOME - it should point on JDK installation, that's it.相反, JAVA_HOME与 Windows 无关——它是一个“约定”——许多其他程序(如 IDE)可以假设如果你有一个名为JAVA_HOME的环境变量——它应该指向 JDK 安装,就是这样。

So if you have multiple JVMs installed on the same computer - you'll have to point explicitly on bin/java.exe of jdk/jre of your choice.因此,如果您在同一台计算机上安装了多个 JVM - 您必须明确指出您选择的jdk/jre的 bin/java.exe。 This can be done by using JAVA_HOME or without.这可以通过使用或不使用 JAVA_HOME 来完成。

On my personal windows system (and I use many Java installation) I usually define the following (I assume all jdk-s are installed in folder "Java", it can be Program Files or whatever):在我个人的 windows 系统上(我使用许多 Java 安装)我通常定义以下内容(我假设所有 jdk-s 都安装在文件夹“Java”中,它可以是 Program Files 或其他):


JAVA_8_HOME=C:\Java\jdk8 JAVA_8_HOME=C:\Java\jdk8

JAVA_9_HOME=C:\Java\jdk9 JAVA_9_HOME=C:\Java\jdk9

... ...

JAVA_HOME=%JAVA_14_HOME% JAVA_HOME=%JAVA_14_HOME%

PATH=... %JAVA_HOME%\bin PATH=... %JAVA_HOME%\bin

By default I would like to use java 14 for example, but I will be able to switch the default in future.默认情况下,我想使用 java 14 例如,但我将来可以切换默认值。 For this, I'll edit the JAVA_HOME definition and point it to another JAVA为此,我将编辑 JAVA_HOME 定义并将其指向另一个 JAVA


Now I want to run something with a default java (which should be ok in the most cases) - I don't think about this at all - just run java -jar Myjar.jar现在我想用默认的 java 运行一些东西(在大多数情况下应该没问题) - 我根本不考虑这个 - 只是运行java -jar Myjar.jar

If I want some specific java (for example java 8) - I can do %JAVA_8_HOME%\bin\java -jar Myjar.jar如果我想要一些特定的 java(例如 java 8)- 我可以做%JAVA_8_HOME%\bin\java -jar Myjar.jar

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

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