如何在Windows 7上设置java_home?

439

我进入控制面板中的“系统”中的环境变量,并创建了两个新变量,一个是用户变量,一个是系统变量。它们都被命名为JAVA_HOME,且均指向

C:\Sun\SDK\jdk\bin

但是出现以下错误时仍无法运行Java命令...

BUILD FAILED
C:\Users\Derek\Desktop\eclipse\eclipse\glassfish\setup.xml:161: The following error  occurred while executing this line:
C:\Users\Derek\Desktop\eclipse\eclipse\glassfish\setup.xml:141: The following error occurred while executing this line:
C:\Users\Derek\Desktop\eclipse\eclipse\glassfish\setup.xml:137: Please set java.home to a JDK installation

Total time: 1 second
C:\Users\Derek\Desktop\eclipse\eclipse\glassfish>lib\ant\bin\ant -f setup.xml
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
Buildfile: setup.xml

我该如何解决这个问题?


3
你关闭了命令提示符并重新打开了它吗?同时看起来你指向的是JRE而不是JDK。你是否安装了JDK? - anger
我已经确定安装了JDK,并且它位于C:\Sun\SDK\jdk\bin,我已经将java_home设置为该路径。 - Derek
仍然似乎在寻找C:\Program Files\Java\jre6\lib\ c。您能否在命令提示符中执行echo %JAVA_HOME%并查看其报告内容? - anger
在我的命令提示符中,当我运行echo %JAVA_HOME%时,它返回: C:\Users\Derek\Desktop\eclipse\eclipse\glassfish>echo %JAVA_HOME% C:\Sun\SDK\jdk\bin - Derek
3
解决方案是:省略 /bin 目录。 - IceFire
显示剩余2条评论
18个回答

686

查找JDK安装目录

首先需要知道Java开发套件的安装路径。

打开JDK的默认安装路径:

C:\Program Files\Java

应该有一个类似的子目录:

C:\Program Files\Java\jdk1.8.0_172

注意:只需将JDK路径放置在末尾,而不要带有/bin(就像许多地方建议的那样)。例如:C:\Java\jdk1.8.0_172而不是C:\Java\jdk1.8.0_172\bin!


设置JAVA_HOME变量

一旦您获得了JDK安装路径:

  1. 右键单击桌面上的我的电脑图标,选择属性
  2. 单击高级选项卡,然后单击环境变量按钮。
  3. 系统变量下,单击新建。
  4. 将变量名称输入为JAVA_HOME
  5. 将变量值输入为Java开发工具包的安装路径。
  6. 单击确定
  7. 单击应用更改

注意:您可能需要重新启动Windows。

完整文章在我的博客上: 在Windows中设置JAVA_HOME变量.


124
谢谢。最后我意识到,只需要将JDK的路径放在末尾,不要加上“/bin”(这是很多地方建议的)。例如,C:\Java\jdk1.6.0_31而不是C:\Java\jdk1.6.0_31\bin! - salocinx
25
但愿有一个程序安装程序可以为您完成这个步骤 :) 我刚刚从企业版切换到社区版,因为社区版只需一个点击,所以我一度认为自己下载了错误的版本 :p。 - John Humphreys
6
有时候,系统变量的更改只有在重启Windows之后才会生效。 - Andrew Chaa
11
一种更快的方法是点击“开始”,然后开始输入“环境变量”。 - Casebash
4
“/Java/jre*” 不是 JDK 目录,而是 Java 运行时环境目录。除非你想进行某些疯狂的黑客行为,否则 JDK 应该位于单独的目录中。 - ericn
显示剩余4条评论

166

对我有用的是将 %JAVA_HOME%\bin 添加到 Path 环境变量中,并且将 JAVA_HOME 环境变量指向 jdk 文件夹。


134

您需要先在系统中安装JDK.

设置Java Home

JAVA_HOME = C:\Program Files\Java\jdk1.7.0 [您的JDK安装目录位置]

一旦您有了JDK安装路径:

  • 右击“我的电脑”图标
  • 选择“属性”。
  • 单击屏幕左侧的高级系统设置选项卡。
  • 打开高级弹出窗口。
  • 单击“环境变量”按钮。

输入图像描述

  • 在系统变量下,单击新建。
  • 将变量名称输入为JAVA_HOME。
  • 将变量值输入为Java开发工具包的安装路径。
  • 单击确定。
  • 点击应用更改。

在系统变量下设置JAVA Path

PATH= C:\Program Files\Java\jdk1.7.0; [使用分号添加值]

在此处检查


15
JAVA_HOME是否应该包含"\bin"?这里的其他答案似乎表明,对于PATH应该包括"bin",但对于JAVA_HOME则不应该。 - devuxer
78
JAVA_HOME 不应包含 \bin。 - Larry Silverman
7
[PLUS ONE] 好漂亮的花! - GingerHead
但是在图像上,您使用 \bin 输入。 - Naveen DA

36

在 cmd(仅限该 cmd 窗口)中:

set JAVA_HOME="C:\\....\java\jdk1.x.y_zz"

echo %JAVA_HOME%

set PATH=%PATH%;%JAVA_HOME%\bin

echo %PATH%

2
如果使用 setx 命令,则即使在计算机关闭后,JAVA_HOME 也会保持设置状态,因此您无需再次设置。此外,不需要添加 bin - Tenzin
是的,但如果您不想正式安装Java,那么就像sgrillon所说,您可以为该实例临时设置它。更好的方法是创建一个批处理文件,您可以运行它来打开命令提示窗口并设置JAVA_HOMEPATHCLASSPATH,然后您就可以拥有一个“便携式”Java环境了。 - Synetech
这是正确的,但是设置JAVA_HOME地址时不需要使用引号。 - Aboozar Rajabi
1
@Aboozar Rajabi,如果路径包含空格字符,则需要使用“ ”。 - Stéphane GRILLON

21
您需要将其设置为 C:\Sun\SDK\jdk(假设JDK安装在此位置 - 这不是默认值)- 不要将 \bin 放在 C:\Sun\SDK\jdk\bin 中。
如果您的应用程序仅在您作为当前用户登录时运行,则将其放入用户变量中 - 如果它需要在系统上所有用户中运行,则将其放入系统变量中。
您还可能需要将 %JAVA_HOME%\bin 添加到路径中(这也取决于您是仅从用户运行还是从所有用户(包括系统)运行)。

17

控制面板似乎仅适用于Java的商业版本,而不适用于GPL版本。 - Thomas Weller

11

7

这是官方解决方案,用于从www.java.com设置Java环境 - 此处

有针对Windows 7、Windows Vista、Windows XP、Linux/Solaris和其他shell的解决方案。


例子

Windows 7

  1. 从开始菜单中选择计算机。
  2. 从上下文菜单中选择系统属性。
  3. 点击高级系统设置 -> 高级选项卡。
  4. 在系统变量下的环境变量中找到PATH,并点击它。
  5. 在编辑窗口中,通过将类的位置添加到PATH的值中来修改PATH。如果您没有PATH项目,则可以选择添加一个新变量,并将PATH作为名称,将类的位置作为值。
  6. 重新打开命令提示符窗口,并运行您的Java代码。

1
官方说明毫无用处。它们只提供了关于如何设置环境变量的通用说明,而没有指示需要设置的值。它们只是说要将其设置为“类的位置”,这很令人困惑和毫无意义。 - Synetech
这些指令不会设置JAVA_HOME,它是一个与PATH完全分离的变量,某些程序需要它。 - Jules

7
对于仍然被这个问题困扰的人(我尝试了所有上面的建议) -
如果你在64位Windows上安装了32位JDK,除了调整PATH变量之外,您可能还需要调整注册表变量。
我已经设置了正确的PATH变量,但仍然无济于事,然后在我的注册表中只发现了“空置”的Java条目,似乎是修复“误射”的Java运行时环境的死胡同。
通过使用Process Monitor来监视我正在尝试启动的程序,以便查找它在寻找Java(Runtime Environment)的注册表中的位置,我得意洋洋地发现它在寻找32位版本的注册表条目,即在HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\JavaSoft\Java Runtime Environment下找到。
在该键中,您应该可以找到已安装的不同Java版本的子键(过去和/或现有)。点击最新版本的子键(例如,我的子键当前为1.7.0_25)。在单击该子键后,您将看到右侧列出的注册表字符串值,特别是JavaHome和RuntimeLib。您需要修改这两个值的值,以反映当前文件夹和jvm.dll文件。
例如,在我的情况下,先前的值分别设置为C:\Program Files(x86)\Java\jre7和C:\Program Files(x86)\Java\jre7\bin\client\jvm.dll,但在我的计算机上不存在。我必须将它们更新为C:\Program Files(x86)\Java\jdk1.7.0_25\jre和C:\Program Files(x86)\Java\jdk1.7.0_25\jre\bin\client\jvm.dll的当前文件夹和文件。
同样,在不同的操作系统中(如32位或64位),这完全取决于您安装的Java(JDK和/或JRE)版本是32位还是64位以及操作系统类型。只需知道它们在注册表的不同位置中反映即可(例如:Wow6432Node适用于在64位计算机上安装了32位JDK的32位应用程序)。
现在,我已经更新了这两个注册表值,我的程序运行得非常流畅,不再有关于缺少Java Runtime Environment(源自注册表)的任何问题。

1
我正在使用64位的Windows 7机器,同时我有以下两个文件夹: C:\Program Files (x86)\Java\ 和 C:\Program Files\Java\现在我的问题是,我的java_home应该指向哪一个? - voidMainReturn
有趣的是,我只在 x86 文件夹下面有 Java 文件夹。 - B. Clay Shannon-B. Crow Raven
在C:\Program Files (x86)\Java\jdk1.7.0_25\jre\bin下,我没有client目录,它只存在于C:\Program Files (x86)\Java\jre7\bin下。我该怎么办? - Michael Cera
在Windows 7上,搜索关键字“1.8.0_74”后,我在HKEY_LOCAL_MACHINE / SOFTWARE / JavaSoft / Java Development Kit / 1.8.0_74 /或../1.8.0_65以及之前安装的所有其他注册表中找到了多个注册表...从底部逐个删除注册表,直到我的最新安装的java 1.8.0_112,现在YourKit java profiler(profiler.exe)可以正常运行,没有错误:“启动C:\ Program Files \ Java \ jdk1.8.0_74 \ bin \ javaw.exe时发生错误”。 - David

6

Windows 7

  1. 使用资源管理器(非Internet Explorer),进入控制面板\所有控制面板项\用户账户

    或者

    • 点击开始按钮

      start

    • 点击您的个人头像

      clickOnPhoto

  2. 更改环境变量

    Change my environment variables

  3. 新建...

    new

    (如果您没有足够的权限将其添加到系统变量部分,请将其添加到用户变量部分)

  4. JAVA_HOME添加为变量名,JDK路径作为变量值 > 确定

    edit system variable ok

测试:

  • 打开一个新的控制台(cmd)
  • 输入set JAVA_HOME
    • 预期输出:JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60

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