使用特定的JVM在具有多个JVM的计算机上运行Java代码的正确方法:

huangapple 未分类评论45阅读模式
英文:

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

问题

我有一个情况,我在一台计算机上有多个 JVM。现在我想要使用特定的 JVM 运行 Java 代码,我应该如何操作呢?
我尝试过:

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

但似乎不起作用,无论我在之前还是之后运行 java -version,我始终得到相同的已安装 Java 版本,例如:

	Microsoft Windows [版本 10.0.17763.1098]
	(c) 2018 Microsoft Corporation. 保留所有权利。

	C:\Windows\System32>java -version
	java 版本 "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 运行?
我知道我在这里肯定犯了一些小错误,有人可以指导一下吗?
提前感谢您的帮助。

英文:

I have a situation where I have multiple jvms on a pc. Now I want to run java code using a specific jvm, how do I do that?
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 e.g

	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?
I know I am making some trivial mistake here, can some one please guide?
Thanks in advance

答案1

得分: 0

如果您运行如下命令:

C:\special\jre\bin java -version //期望的版本

您需要设置一个PATH变量,

JAVA_SPECIAL_HOME = C:\special\jre\

然后运行如下命令:

%JAVA_SPECIAL_HOME%\bin\java
英文:

If you run as,

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

You need to set a PATH variable,

JAVA_SPECIAL_HOME = C:\special\jre\

And run as,

%JAVA_SPECIAL_HOME%\bin\java

答案2

得分: 0

PATH 是一个特殊的变量,它指向一个文件夹,其中Windows可以找到可执行文件(不一定是Java,但在这种情况下是Java)。所以,如果你的系统中有 Java 10 在路径中,打开 cmd 并输入 java -version - 你会看到 Java 10。
如果有许多带有 "java.exe" 的文件夹 - 第一个出现的那个将被启动。

JAVA_HOME 则恰恰相反,与 Windows 无关 - 它是一种“约定” - 许多其他程序(如集成开发环境)可以假设,如果你有一个名为 JAVA_HOME 的环境变量 - 它应该指向 JDK 安装路径,仅此而已。

因此,如果在同一台计算机上安装了多个 JVM - 你将不得不明确指定你选择的 jdk/jre 文件夹中的 bin/java.exe。这可以通过使用 JAVA_HOME 或不使用来实现。

在我的个人Windows系统上(我安装了许多Java版本),我通常定义如下(我假设所有的 JDK 安装在名为 "Java" 的文件夹中,可以是 Program Files 或其他位置):


JAVA_8_HOME=C:\Java\jdk8

JAVA_9_HOME=C:\Java\jdk9

...

JAVA_HOME=%JAVA_14_HOME%

PATH=... %JAVA_HOME%\bin

默认情况下,我想使用 Java 14,但将来我可以更改默认值。为此,我会编辑 JAVA_HOME 的定义,将其指向另一个 Java 版本。


现在,我想要使用默认的 Java 运行某些东西(在大多数情况下这应该没问题)- 我根本不用考虑这个 - 只需运行 java -jar Myjar.jar

如果我想要特定的 Java 版本(例如 Java 8)- 我可以执行 %JAVA_8_HOME%\bin\java -jar Myjar.jar

英文:

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). 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.

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. This can be done by using JAVA_HOME or without.

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):


JAVA_8_HOME=C:\Java\jdk8

JAVA_9_HOME=C:\Java\jdk9

...

JAVA_HOME=%JAVA_14_HOME%

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. For this, I'll edit the JAVA_HOME definition and point it to another 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

If I want some specific java (for example java 8) - I can do %JAVA_8_HOME%\bin\java -jar Myjar.jar

huangapple
  • 本文由 发表于 2020年4月10日 12:50:16
  • 转载请务必保留本文链接:https://java.coder-hub.com/61134218.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定