如何在Windows 7上设置java_home?


422

我转到控制面板中“系统”中的“环境变量”,并创建了两个新变量,一个用于用户变量,另一个用于系统变量。两者都被命名为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
您关闭了cmd并重新打开了吗?而且看起来您指向的是JRE,而不是JDK。您安装了JDK吗?
愤怒的

我肯定已经安装了JDK,它位于我将java_home设置为的C:\ Sun \ SDK \ jdk \ bin中。
德里克(Derek)2010年

我什至已经重新开始了…………几次以来…………
Derek

不过这似乎是在寻找C:\ Program Files文件\的Java \ JRE6 \ LIB \ c可以做回声%JAVA_HOME%在命令提示符,看看它报告
愤怒

3
解决的方法是:忽略/ bin
IceFire

Answers:


673

查找JDK安装目录

首先,您需要了解Java Development Kit的安装路径。

打开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变量


121
谢谢。最终,我意识到一个人只需要将jdk的路径放在最后而不带/ bin即可(如很多地方所建议的那样)。例如C:\ Java \ jdk1.6.0_31而不是C:\ Java \ jdk1.6.0_31 \ bin!
salocinx 2012年

24
上帝禁止我为您执行此步骤的安装程序是:)我刚刚从企业版切换到社区版,并且我确信我下载了错误的东西,因为它一键点击了企业版:p
John Humphreys- w00te 2012年

6
有时,直到重新启动Windows,系统变量更改才会生效。
安迪

11
一种更快的方法是点击开始,然后开始输入环境变量
Casebash 2013年

4
/Java/jre*不是JDK目录,这是Java Runtime Enviroment目录。JDK位于单独的目录中,除非您想进行一些疯狂的修改
ericn

157

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


126

您必须首先在系统中安装JDK

设置Java主页

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

有了JDK安装路径后:

  • 右键单击“我的电脑”图标
  • 选择属性。
  • 点击屏幕左侧的高级系统设置标签
  • Aadvance Popup已打开。
  • 单击环境变量按钮。

在此处输入图片说明

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

在系统变量下设置JAVA路径

路径 = C:\ Program Files \ Java \ jdk1.7.0; [使用分号附加值]

在这里检查


14
JAVA_HOME是否应包含“ \ bin”?这里的其他答案似乎建议“ bin”应该包含在PATH中,而不是JAVA_HOME。
devuxer

72
JAVA_HOME不应包含\ bin。
拉里·西尔弗曼

5
[加一]好花!
GingerHead's

但是在Image上,您使用\ bin输入。
NaveenDA '17

32

在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_HOMEPATH以及CLASSPATH,那么你可以有一个“便携式” Java环境。
Synetech

没错,但是设置JAVA_HOME地址不需要“”
Aboozar Rajabi

1
@Aboozar Rajabi,如果...路径中包含空格字符,则需要“”。
sgrillon '16

19

您需要将其设置为C:\Sun\SDK\jdk(假设这是JDK的安装位置-这不是默认设置)-不要将\ bin放入C:\Sun\SDK\jdk\bin

如果您的应用仅在以当前用户身份登录时运行,则将其放入用户变量-如果需要为系统上的所有用户运行,则将其放入系统变量。

您可能还需要添加%JAVA_HOME%\bin到路径(这还取决于您是仅从用户还是从所有用户(包括系统)运行它)




7

对于仍然为这个问题感到困惑的人(我尝试了上述所有建议)-

如果您使用的是64位版本的Windows,并且已安装32位JDK,则除了调整PATH变量外,您可能还需要调整注册表变量。

我一直在努力,正确地设置了PATH变量(仍然无济于事),然后只在注册表中找到了“空置”的Java条目,这似乎是修复“错误的” Java Runtime Environment的死路。

通过Process Monitor观察我试图开始的程序,以嗅探它在Java注册表中的查找位置(运行时环境),我胜利地发现它正在查找32位版本的注册表项,该注册表项位于HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\JavaSoft\Java Runtime Environment

在该键中,您应该找到已安装(过去和/或现在)不同Java版本的子键。单击最新版本的子项(例如,我的子项当前为1.7.0_25)。单击该子项后,您将看到右侧列出的注册表字符串值,尤其是JavaHomeRuntimeLib。您需要修改这两个值的值以反映当前文件夹和jvm.dll文件。

例如,在我的情况下,这些值(以前)分别设置为C:\Program Files (x86)\Java\jre7C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll并且在我的机器上不存在。我不得不这些更新到当前文件夹和文件C:\Program Files (x86)\Java\jdk1.7.0_25\jreC:\Program Files (x86)\Java\jdk1.7.0_25\jre\bin\client\jvm.dll

同样,这将完全取决于您安装的Java版本(JDK和/或JRE)(32或64位)以及所使用的操作系统类型(32或64位)。只需知道它们反映在注册表中的不同位置即可(例如Wow6432Node对于32位应用程序,在我的情况下,是在64位计算机上安装了32位JDK)。

现在,我已经更新了这两个注册表值,我的程序可以完美运行,不会再出现任何关于缺少Java运行时环境的麻烦或抱怨(从注册表中提取)。


1
我在64位Windows 7计算机上,并且同时具有:C:\ Program Files(x86)\ Java \和C:\ Program Files \ Java \现在,我的问题是java_home应该指向哪一个?
voidMainReturn

有趣; 我在x86文件夹下面只有Java文件夹。
B. Clay Shannon

在C:\ Program Files(x86)\ Java \ jdk1.7.0_25 \ jre \ bin下,我没有目录客户端,它仅存在于C:\ Program Files(x86)\ Java \ jre7 \ bin下。我该怎么办?
Pavol Havlik 2014年

在Windows 7上,搜索关键字“ 1.8.0_74”后,我在HKEY_LOCAL_MACHINE / SOFTWARE / JavaSoft / Java Development Kit / 1.8.0_74 /或../1.8.0_65中使用regedit找到了多个注册表,并且以前安装了所有其他注册表...从底部到我最新安装的Java 1.8.0_112底部逐个删除注册表后,现在YourKit Java Profiler(profiler.exe)可以正常工作了:“启动C:\ Program Files \ Java \ jdk1.8.0_74 \ bin \时出错javaw.exe”。
大卫

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,JAVA_HOME是某些程序所需的与PATH完全不同的变量。
Jules

6

Windows 7的

  1. 转到控制面板\所有控制面板项\用户帐户使用资源管理器(不是Internet Explorer!)。

    要么

    • 点击开始按钮

      开始

    • 点击你的图片

      clickOnPhoto

  2. 更改我的环境变量

    更改我的环境变量

  3. 新...

    新

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

  4. JAVA_HOME添加为变量名称,并将JDK位置添加为变量值>确定

    编辑系统变量确定

测试:

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

6

我们需要在这里可以互换讨论的两个环境变量之间进行区分。一种是JAVA_HOME变量。另一个是路径变量。任何引用JAVA_HOME变量的进程都在寻找JDK而不是JRE的搜索路径。JAVA_HOME变量的使用并不意味着Java编译器本身。编译器知道自己的位置。该变量意味着其他软件可以更轻松地定位编译器。IDE软件通常使用此变量,以便从Java源代码编译和构建应用程序。相比之下,Windows CMD解释器以及许多其他第一方和第三方软件将引用Path变量,而不是JAVA_HOME变量。

用例1:从CMD编译

因此,例如,如果您没有使用任何IDE软件,并且只希望能够从CMD进行编译,而与当前工作目录无关,那么您想要的是正确设置Path变量。在您的情况下,您甚至不需要JAVA_HOME变量。因为CMD使用的是Path,而不是JAVA_HOME来定位Java编译器。

用例2:从IDE编译

但是,如果您正在使用某些IDE软件,则必须首先查看文档。它可能需要设置JAVA_HOME,但是出于相同的目的,它也可能使用另一个变量名。多年来,事实上的标准一直是JAVA_HOME,但事实并非总是如此。

用例3:从IDE和CMD进行编译

如果除了IDE软件之外,您还希望能够独立于当前工作目录从CMD进行编译,则除了 JAVA_HOME变量之外,您可能还需要将JDK搜索路径附加到Path变量。

JAVA_HOME与路径

如果您的问题与编译Java有关,那么您想检查JAVA_HOME变量和Path(如果适用)。如果您的问题与运行Java应用程序有关,那么您要检查Path变量。

路径变量在所有操作系统中通用。因为它是由系统定义的,并且因为它是用于定位JRE的默认变量,所以运行Java应用程序几乎没有任何问题。特别是在Windows上,软件安装程序通常会为您进行所有设置。但是,如果您是手动安装,则最安全的做法可能是完全跳过JAVA_HOME变量,而仅对JDK和JRE都使用Path变量。任何最新版本的IDE软件都应该可以使用它。

符号链接

符号链接可以通过piggy带现有环境变量之一来提供引用JDK搜索路径的另一种方法。

我不确定Oracle / Sun JDK / JRE的先前版本,但至少jdk1.8.0_74的安装程序将搜索路径附加C:\ProgramData\Oracle\Java\javapath到Path变量,并将其放在字符串值的开头。该目录包含指向JRE目录中的java.exe,javaw.exe和javaws.exe的符号链接。

因此,至少对于Java 8 JDK以及大概是Java 8 JRE独立而言,不需要为JRE完成环境变量配置。只要您使用安装程序包对其进行设置。但是,您的Windows安装可能有所不同。请注意,Oracle JRE与JDK捆绑在一起。

如果您发现Java JDK配置使用的是错误版本的编译器,或者似乎在通过魔术操作(未明确定义)(未强制使用拼写),则您的环境变量中可能存在符号链接。因此,您可能需要检查符号链接。


5

转到Mycomputer(This PC)->右键单击->选择属性->高级系统设置->环境变量->在系统变量中,单击“ 新建 ”按钮,然后在变量名和路径C:\ Program Files \ Java \ jdk1中写入JAVA_HOME。变量值中存在jdk的8.0_131->单击“确定”。

设置JAVA_HOME后,关闭并重新打开命令提示符。有时更改不会反映在设置JAVA_HOME之前打开的cmd中。

您还可以通过终端本身设置JAVA_HOMESET JAVA_HOME =“ C:\ Program Files(x86)\ Java \ jdk1.8.0_131”


4

在Eclipse中: Window->Preferences->Java->Installed JREs

使用搜索功能来确保列出了最新的Java安装;然后确保它已被选中。这应该是JDK,而不是JRE。


这些指令未设置与Eclipse不相关的JAVA_HOME。
Jules

4

在将Java目录添加到PATH变量时,您可能希望将其放在变量的开头。我遇到的问题是,将Java目录放在末尾PATH将不起作用。经过检查后,我java.exeWindows\System32目录中找到了目录,当您的目录中有多个同名文件时,它看起来像第一个目录PATH


当/如果你用安装程序安装Java,它将替换的副本java.exe,并javaw.exe与来自JRE / JDK副本的系统文件夹,所以它应该仍然工作。如果您手动安装它(只需解压缩档案),那么您实际上必须注意正在运行哪个副本。
Synetech

这些指令未设置JAVA_HOME,JAVA_HOME是某些程序所需的与PATH完全不同的变量。
Jules

3

以管理员身份运行Eclipse

那解决了我的问题。我仍在寻找背后的逻辑。


1
我不能说我完全理解这一点,但是蚀实际上只是在这里给出了错误的错误信息。当您以非管理员身份运行它时,它无法删除.jar文件或其他内容,然后错误地报告它找不到Javac。无论如何,此解决方案也对我有用。
杰西(Jess)

如果像我这样在Windows Server 2012 R2中运行Eclipse,则以管理员身份运行Eclipse对我有效。还记得还要将java_home设置为程序文件文件夹,而不是程序(86)文件文件夹。希望这一点对您有所帮助。
ombiro

2

如果在安装jdk之后尚未重新启动计算机,则只需重新启动计算机即可。

如果您想制作一个可移植的 Java并在使用Java之前设置路径,只需制作一个批处理文件(我在下面说明)。

如果要在计算机启动时运行此批处理文件,只需将批处理文件快捷方式放在启动文件夹中。在Windows 7中,启动文件夹为“ C:\ Users \ user \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup”

制作这样的批处理文件:

set Java_Home=C:\Program Files\Java\jdk1.8.0_11
set PATH=%PATH%;C:\Program Files\Java\jdk1.8.0_11\bin

注意: java_homepath是变量。您可以根据需要设置任何变量。例如set amir=good_boy,您可以看到amir %amir%或您可以看到java_home的%java_home%


0

经过围绕此处大多数解决方案工作了数小时之后,仅通过安装32位JDK就为我解决了该问题。


1
如果这是您想要的,那很好,但是有些人不希望实际安装Java而只是手动设置“便携式”环境,在这种情况下,您需要知道需要设置哪些环境变量。
Synetech

0

您可能想在Windows / System32文件夹中查找以下文件:-java.exe-javaw.exe-javaws.exe

因为path变量包含这些文件,所以您可能会头疼,想弄清楚java -version或javac -version为什么总是指向旧的JAVA_HOME:重命名这些文件,例如,用下划线删除扩展名。然后,您只需创建JAVA_HOME变量,将其添加到path变量(例如,%JAVA_HOME%)中,然后附加“ \ bin”粒子。这样,您只需更改JAVA_HOME变量即可,使其指向不同的JRE或JDK,并只需设置JAVA_HOME即可安装多个Java。

这也意味着最好手动安装Java,而无需安装程序,这样您就可以玩弄它了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.