Eclipse如何找到JRE或JDK的位置?

4

根据Eclipse FAQ,我了解到:

Eclipse不会查询JAVA_HOME环境变量。

我的疑问是:Eclipse如何初始化虚拟机?它不知道Java的位置。我的eclipse.ini文件没有-vm配置,但我仍然可以运行Eclipse。

源文链接

更新

根据Eclipse 安装指南Eclipse不会将条目写入Windows注册表


1
它可能会检查注册表 - 至少在Windows上。 - user330315
1
值得注意的是,Eclipse不会向Windows注册表中写入条目。请参见上面的源代码。 - MaheshVarma
1
我并没有说它会写入注册表,只是它会读取注册表作为(正确安装的)JRE可用的位置。 - user330315
@a_horse_with_no_name 在Windows上,system32\java.exe是一个存根,它查找注册表以解析活动JDK。我非常怀疑Eclipse会自己这样做。 - Marko Topolnik
7个回答

12
据我所知,为了调用JVM,Eclipse会执行"java"命令,如果该命令在您的系统执行路径中,则Eclipse无需查找安装目录。
要进行检查,可以启动操作系统 shell 并执行下一个命令(从任何位置):
> java -version

编辑:我部分错误。根据常见问题解答(http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F#Find_the_JVM

如果在eclipse/jre目录下已安装JVM,则Eclipse将使用它;否则,启动器将参考eclipse.ini文件和系统路径变量

因此,Eclipse首先查找其eclipse/jre目录中是否安装了JVM,如果未安装,则参考eclipse.ini文件,最后查看系统路径。


1
或者它会检查系统路径(当调用javaw命令时,操作系统会执行此操作,它不会调用java命令,因为它不想启动控制台)。 - jwenting
@jwenting 您是正确的,这是javaw进程(没有控制台)。 - Tomas Narros
@TomasNarros 如果它不在系统执行路径中怎么办?它如何找到javaw工具的位置? - MaheshVarma
@TomasNarros 你的意思是Eclipse会查看PATH环境变量吗? - MaheshVarma
@Samuel #1 那么肯定会出现错误对话框或其他什么提示。我从未见过Java安装程序将bin文件夹注册到系统路径中,因此不会出现这种情况。#2 不完全准确:Eclipse启动javaw命令,由系统解析。 - Tomas Narros

2

即使是Help->Installation details->Configuration也会给出您正在使用的确切版本和类型的JVM。在System Properties中,这里清楚地给出了。


1

或者在Eclipse中运行Java程序。Eclipse将显示它正在使用的javaw命令的完整路径。


这是唯一正确的答案。事实上,我的javaw路径是:C:\Users\Marco\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_19.0.2.v20230129-1123\jre\bin\javaw.exe - Marco D.G.

0

问题已解决!

1)下载并安装了Android开发工具(Eclipse)和JDK Java捆绑包的64位版本。

2)更新了PATH环境变量(Win控制面板...系统...高级选项...环境变量) 在我的情况下,它现在看起来像这样: C:\Program\Java\jre7\bin\client\jvm.dll;C:\Program\Java\jdk1.7.0_21\bin

(\ bin目录后没有反斜杠)


1
感谢您在StackOverflow上的帮助。很高兴为这个问题创建一个答案,即使您是提问者。您的措辞听起来好像是这种情况。但是,提问者账户和回答者账户是不同的(据我所知,这并没有违反任何规则,只是令人困惑)。您能否解释或重新表述一下,以避免这种混淆的印象? - Yunnosch

0
Eclipse会查找系统路径变量以获取已安装的JVM。这取决于您如何定义路径变量。路径中定义多个版本的顺序确实很重要,即如果在jdk1.6/bin之前设置了jdk1.5/bin,则系统将在cmd上执行java -version时选择1.5版本。

0

现在在WIN64上,Oracle会创建一些新目录并将它们添加到您的路径中。Eclipse默认使用安装过程中指定的第二个目录,因为它会在JAVA_HOME之前加载到路径的头部。他们为什么要求您提供两个目录是令人困惑的,我没有答案。我删除了第二个目录,从路径中移除了这两个添加的目录,相应地配置了我的JAVA_HOME环境变量(在我的情况下已经指向旧版本),然后Eclipse就可以正常运行了。


-1

Eclipse将使用您已安装的任何版本JRE来运行。要查看/编辑正在使用的版本,请转到“首选项”->“Java”->“安装的JRE”


@SamuelLebron 即使您在Eclipse中设置了JRE,也不会有任何影响到Eclipse本身的启动。 - Marko Topolnik
1
不,它不是。解决JRE位置有不同的方法。其中一种是系统路径;另一种是JAVA_HOME;而您提到的第三种机制与浏览器无关。Eclipse仅使用这些机制中的一种,即系统路径。 - Marko Topolnik
@MarkoTopolnik 我们可以通过在eclipse.ini文件中提供 -vm 来使用JDK运行Eclipse。为什么有人想要用JDK而不是JRE运行?能否请您解释一下? - MaheshVarma
@MarkoTopolnik 我的 system32 目录中没有 java.exe。 - MaheshVarma
1
@SamuelLebron 关于为什么使用JDK而不是JRE,JDK只是JRE的超集,那为什么不呢?许多开发人员甚至不安装单独的JRE,他们使用一个JDK安装。 - Marko Topolnik
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接