JetBrain IntelliJ IDEA如何选择Java启动

5
我已经在Windows 7上安装了Java 8 EA,但它既不在我的%JAVA_HOME%中,也不在%PATH%中。然而,当我通过单击idea64.exe启动我的IntelliJ IDEA v12时,它选择了Java 8 EA,而不是我的Java SDK 1.6.0_32,后者在%JAVA_HOME%和%PATH%中。
有人知道IDEA何时启动,如何决定运行哪个Java版本吗?

它依赖于 IDEA_JDK,你尝试过将这个变量设置为你想要的JDK吗? - fge
我没有定义那个环境变量。 - Gelin Luo
如果您定义了它,那么它是否具有预期的效果? - fge
我已经添加了环境变量。如果我从idea.bat启动,它会设置正确的JDK,但如果从idea64.exe启动,则仍然不好。 - Gelin Luo
如果您正在打开Android Studio,则可以使用STUDIO_JDK 环境变量 - denispyr
3个回答

18

该程序是从注册表中获取的。

当从.exe文件启动IDEA时,它会按以下顺序查找Java:

  1. IDEA_JDK(或IDEA_JDK_64)环境变量
  2. IDEA主目录下的jre/(或jre64/)目录
  3. 注册表
  4. JDK_HOME环境变量
  5. JAVA_HOME环境变量

当从.bat文件启动时,顺序相同,但不会查找注册表,并且不使用64位后缀的变量(这可能是一个错误)。


还没有找到。这是我的HKCU/Software/ej-technologies: http://ge.tt/8vVkmvU/v/0。在HKLM或HKLM/Software中根本没有Wow6432Node,ej-technologies也不在HKLM或HKLM/Software下面。 - Gelin Luo
你说的“不存在”是什么意思?显然,在exe4j已知的JVM列表中有Java 8。如果你不想让它被选中,可以从注册表中删除所有提及它的内容,或者使用IDEA_JDK_64环境变量来覆盖它。 - Roman Shevchenko
是的,Java 8在列表中。问题是为什么exe4j选择它而不是列表中的其他任何人?我没有定义IDEA_JDK_64。那么exe4j是如何选择它的呢? - Gelin Luo
因为它的版本号最大。 - Roman Shevchenko
非常感谢您的答复。不过我必须说,64位的Idea11使用的是IDEA_JDK而不是IDEA_JDK_64变量。 - Luca Molteni
显示剩余2条评论

3

1
该链接页面已不存在。最好直接将相关信息放入您的答案中,而不是链接到它。 - Mark B
马克,所有的东西都在那里,你只需要先登录。https://intellij-support.jetbrains.com/hc/en-us/articles/206544879-Selecting-the-JDK-version-the-IDE-will-run-under?flash_digest=467bccd8b0182e4073a4062ed981c3723176ea9c - dawogfather
我理解你的观点,Mark。从不离开SO会容易得多,但不幸的是,这篇文章涉及到许多不同的操作系统和选项,因此相当冗长。 - dawogfather
不,我已登录,它仍然把我带到“您正在查找的页面不存在”。 - Mark B
经过进一步检查,我认为您在URL中有某种会话令牌或用户ID,删除它后,此URL对我有效:https://intellij-support.jetbrains.com/hc/en-us/articles/206544879-Selecting-the-JDK-version-the-IDE-will-run-under。 - Mark B
显示剩余2条评论

0

您可以添加一个名为 IDEA_JDK 的额外环境变量,以定位您想要Intellij使用的特定JDK。


我已经添加了环境变量。如果我从idea.bat启动,它会设置正确的JDK,但如果从idea64.exe启动,则仍然不好。 - Gelin Luo

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