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

C: \ Sun jdk \ SDK \ \ 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

我该如何解决这个问题?


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

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

-Djava.home=YOUR_PATH_HERE

或者当你执行Java时,你可以在命令中添加命令行开关:

java -Djava.home=PATH SomeJavaApp

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

如果你的应用程序只在你作为当前用户登录时运行,那么把它放在用户变量中——如果它需要为系统上的所有用户运行,那么把它放在系统变量中。

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


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


以管理员身份运行Eclipse。

这解决了我的问题。我还在研究背后的逻辑。


Eclipse: Window->Preferences->Java->已安装的jre

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


查找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\bin !


设置JAVA_HOME变量

有了JDK安装路径后:

右键单击桌面上的“我的电脑”图标,选择“属性”。 单击高级选项卡,然后单击环境变量按钮。 在“系统变量”下单击“新建”。 输入变量名JAVA_HOME。 输入变量值作为Java Development Kit的安装路径。 单击OK。 单击“应用更改”。

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

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


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

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


例子

Windows 7 Select Computer from the Start menu Choose System Properties from the context menu Click Advanced system settings -> Advanced tab Click on Environment Variables, under System Variables, find PATH, and click on it. In the Edit windows, modify PATH by adding the location of the class to the value for PATH. If you do not have the item PATH, you may select to add a new variable and add PATH as the name and the location of the class as the value. Reopen Command prompt window, and run your Java code.


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


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

设置Java主页

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

有了JDK安装路径后:

右键单击“我的电脑”图标 选择Properties。 单击屏幕左侧的高级系统设置选项卡 一个预先弹出窗口打开。 点击环境变量按钮。

在“系统变量”下单击“新建”。 输入变量名JAVA_HOME。 输入变量值作为Java Development Kit的安装路径。 单击OK。 单击“应用更改”。

在“system variable”下设置“JAVA Path”

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


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

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

我绞尽脑汁,已经正确地设置了PATH变量——仍然无济于事——然后在我的注册表中只发现“空的”Java条目,似乎是修复“失败”的Java运行时环境的死胡同。

通过使用进程监视器来监视我试图开始的程序,以嗅出它在Java(运行时环境)的注册表中查找的位置,我得意地发现它在HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\JavaSoft\Java运行时环境中查找32位版本的注册表项。

在该键中,您应该找到已安装的不同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的当前文件夹和文件。

同样,这完全取决于您安装的Java (JDK和/或JRE)版本——32或64位——以及您使用的操作系统类型——32或64位。只需要知道它们反映在注册表中的不同位置(例如用于32位应用程序的Wow6432Node,在我的例子中,32位JDK安装在64位机器上)。

现在我已经更新了这两个注册表值,我的程序运行得完美无缺,不再出现问题或关于缺少Java运行时环境的抱怨(源于注册表)。


在对这里的大多数解决方案进行了数小时的研究之后,我只需要安装32位JDK就解决了这个问题。


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

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

echo %JAVA_HOME%

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

echo %PATH%

Windows 7

转到控制面板\所有控制面板项\用户帐户使用浏览器(不是Internet Explorer!) 或 点击开始按钮 点击你的图片 改变环境变量 新… (如果您没有足够的权限将其添加到系统变量部分,请将其添加到用户变量部分) 添加JAVA_HOME为变量名,添加JDK位置为变量值> OK

测试:

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


一个映像可以解决这个问题。

更多的


如果安装JDK后没有重新启动计算机,请重新启动计算机。

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

如果您想在计算机启动时运行此批处理文件,只需将批处理文件快捷方式放在启动文件夹中。在windows 7的启动文件夹是“C:\Users\user\AppData\漫游\Microsoft\ windows \开始菜单\程序\启动”

做一个这样的批处理文件:

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

注意: Java_home和path是变量。你可以随意设置任何变量。 例如,设置amir=good_boy,你可以通过%amir%看到amir,或者通过%java_home%看到java_home


We need to make a distinction between the two environment variables that are discussed here interchangeably. One is the JAVA_HOME variable. The other is the Path variable. Any process that references the JAVA_HOME variable is looking for the search path to the JDK, not the JRE. The use of JAVA_HOME variable is not meant for the Java compiler itself. The compiler is aware of its own location. The variable is meant for other software to more easily locate the compiler. This variable is typically used by IDE software in order to compile and build applications from Java source code. By contrast, the Windows CMD interpreter, and many other first and third party software references the Path variable, not the JAVA_HOME variable.

用例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 vs. Path

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

Path variable is used universally across all operating systems. Because it is defined by the system, and because it's the default variable that's used for locating the JRE, there is almost never any problem running Java applications. Especially not on Windows where the software installers usually set everything up for you. But if you are installing manually, the safest thing to do is perhaps to skip the JAVA_HOME variable altogether and just use the Path variable for everything, for both JDK and the JRE. Any recent version of an IDE software should be able to pick that up and use it.

符号链接

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

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

因此,至少对于Java 8 JDK,以及独立的Java 8 JRE,不需要为JRE进行环境变量配置。只要你使用安装包来设置它。不过,Windows安装可能会有不同。注意,Oracle JRE是与JDK捆绑在一起的。

如果您发现您的Java JDK配置使用了错误的编译器版本,或者它看起来像魔术一样工作,而没有显式地定义(没有施咒),那么您的环境变量中可能有一个符号链接。你可能需要检查符号链接。


goto Mycomputer(这台PC) ->右键单击->选择属性->高级系统设置->环境变量->在系统变量中单击“新建”按钮并在变量名称和路径C:\Program Files\Java\ jdk1.8.0_131 were jdk在变量值中存在->单击确定。

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

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


你可能想在Windows/System32文件夹中找到以下文件: ——java.exe ——javaw.exe ——javaws.exe

Because, the path variable is including these files, you can get a headache trying to figure out why the java -version or javac -version keeps pointing to the old JAVA_HOME: rename those files, take out the extension with an underscore, for instance. And then, you only will have to create the JAVA_HOME variable, add it to the path variable (e.g., %JAVA_HOME%) and append the "\bin" particle. This way you need to only change the JAVA_HOME variable pointing to different JRE or JDK and have multiple installations of java just by setting JAVA_HOME.

这也意味着最好手动安装Java,不需要安装程序,这样您就可以随意使用它。