437

我转到控制面板中“系统”中的环境变量,并创建了两个新变量,一个用于用户变量,一个用于系统变量。两者都被命名为 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

我该如何解决这个问题?

4

18 回答 18

684

查找 JDK 安装目录

首先,您需要知道 Java 开发工具包的安装路径。

打开JDK的默认安装路径:

C:\Program Files\Java

应该有一个子目录,如:

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

注意:只需要在最后放置不带 /bin 的 jdk 的路径(正如很多地方所建议的那样)。例如 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 变量

于 2011-06-29T13:27:14.877 回答
165

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

于 2010-06-11T17:04:46.287 回答
131

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

设置 Java 主页

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

获得 JDK 安装路径后:

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

在此处输入图像描述

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

在系统变量下设置 JAVA Path

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

在这里检查

于 2013-06-17T07:07:24.967 回答
34

在 cmd 中(暂时用于该 cmd 窗口):

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

echo %JAVA_HOME%

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

echo %PATH%
于 2015-04-02T13:08:36.643 回答
21

You need to set it to C:\Sun\SDK\jdk (Assuming that is where the JDK is installed - It is not the default) - Do not put the \bin in C:\Sun\SDK\jdk\bin.

If your app only runs when you are logged in as the current user then put it in the user variables - If it needs to run for all users on your system then put it in System variables.

You might also need to add %JAVA_HOME%\bin to the path also (Also it depends on whether you run it from just the user or from all users, including System)

于 2010-04-12T02:55:42.607 回答
17

http://javahowto.blogspot.com/2006/05/javahome-vs-javahome.html

控制面板 > Java,Java 选项卡,单击查看按钮。在运行时参数中,输入:

-Djava.home=YOUR_PATH_HERE

或者,当您执行 Java 时,您可以将该命令行开关添加到命令中:

java -Djava.home=PATH SomeJavaApp
于 2010-04-12T02:39:52.423 回答
11

一张图片可以解决这个问题。 在此处输入图像描述

更多

于 2016-02-05T10:00:46.510 回答
7

这是从 www.java.com- here设置 Java 环境的官方解决方案

有适用于 Windows 7、Windows Vista、Windows XP、Linux/Solaris 和其他 shell 的解决方案。


例子

Windows 7的

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

对于那些仍然被这个问题困扰的人(我尝试了上述所有建议)——

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

我把头发拉出来,正确设置了我的PATH变量——仍然无济于事——然后只在我的注册表中找到“空出”的 Java 条目,这似乎是修复“失火”的 Java 运行时环境的死胡同。

通过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\jre7并且C:\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 位。只需知道它们反映在注册表中的不同位置(例如Wow6432Node32 位应用程序,在我的例子中,32 位 JDK 安装在 64 位机器上)。

现在我已经更新了这两个注册表值,我的程序可以完美运行,没有更多关于缺少 Java 运行时环境(源于注册表)的打嗝或抱怨。

于 2013-06-26T05:47:27.160 回答
6

Windows 7的

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

    或者

    • 点击开始按钮

      开始

    • 点击你的图片

      点击照片

  2. 更改我的环境变量

    更改我的环境变量

  3. 新的...

    新的

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

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

    编辑系统变量确定

测试:

  • 打开一个的控制台(cmd)
  • 类型set JAVA_HOME
    • 预期输出:JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
于 2016-01-15T10:11:03.317 回答
6

我们需要区分此处可互换讨论的两个环境变量。一个是JAVA_HOME变量。另一个是Path变量。任何引用 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 软件都应该能够获取并使用它。

符号链接

符号链接可以通过捎带一个现有的环境变量来提供另一种引用 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 配置使用了错误版本的编译器,或者它似乎在变魔术,没有明确定义(没有强制转换),那么您的环境变量中可能有一个符号链接. 因此,您可能需要检查符号链接。

于 2016-03-14T09:31:59.653 回答
5

转到我的电脑(这台电脑)->右键单击->选择属性->高级系统设置->环境变量->在系统变量中单击“新建”按钮并在变量名和路径C:\Program Files\Java\jdk1中写入JAVA_HOME 。 8.0_131 是 jdk 存在于变量值中-> 单击确定。

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

您也可以通过终端本身设置 JAVA_HOME: SET JAVA_HOME="C:\Program Files (x86)\Java\jdk1.8.0_131"

于 2018-01-07T10:08:32.140 回答
4

在将 Java 目录添加到PATH变量时,您可能希望将其放在变量的开头。我遇到了问题,将 Java 目录放在末尾是PATH行不通的。检查后,我java.exe在我的Windows\System32目录中找到了,看起来第一个赢了,当您的PATH...

于 2013-05-23T14:49:20.170 回答
4

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

使用搜索功能确保列出了最新的 Java 安装;然后确保它是被检查的那个。这应该是 JDK 而不是 JRE。

于 2011-05-08T01:21:09.380 回答
3

以管理员身份运行Eclipse 。

这解决了我的问题。我仍在挖掘它背后的逻辑。

于 2010-08-12T12:00:50.250 回答
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 by%amir%或者您可以看到 java_home by%java_home%

于 2016-03-07T08:47:05.330 回答
0

经过数小时的大部分解决方案的工作,我只需要安装 32 位 JDK 就解决了这个问题。

于 2013-07-16T19:42:43.090 回答
0

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

因为,路径变量包含这些文件,你可能会头疼试图弄清楚为什么 java -version 或 javac -version 一直指向旧的 JAVA_HOME:例如,重命名这些文件,取出带有下划线的扩展名。然后,您只需创建 JAVA_HOME 变量,将其添加到路径变量(例如,%JAVA_HOME%)并附加“\bin”粒子。这样,您只需更改指向不同 JRE 或 JDK 的 JAVA_HOME 变量,并通过设置 JAVA_HOME 来安装多个 java。

这也意味着最好在没有安装程序的情况下手动安装 Java,这样您就可以玩弄它了。

于 2019-02-27T02:31:16.827 回答