如何在Windows 7上设置java_home?
我在控制面板的“系统”中find了环境variables,并创build了两个新的variables,一个用于用户variables,一个用于系统variables。 两者都被命名为JAVA_HOME,都指向
C:\太阳\ 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
我该如何解决这个问题?
查找JDK安装目录
首先,您需要知道Java开发工具包的安装path。
打开JDK的默认安装path:
C:\Program Files\Java
应该有一个像这样的子目录:
C:\Program Files\Java\jdk1.6.0_10
注意:只需要把path放到没有/ bin的jdk中(正如很多地方所build议的那样)。 例如C:\ Java \ jdk1.6.0_31和NOT C:\ Java \ jdk1.6.0_31 \ bin!
设置JAVA_HOMEvariables
一旦你有了JDK安装path:
- 右键单击桌面上的我的电脑图标,然后select属性 。
- 单击高级选项卡,然后单击环境variablesbutton。
- 在系统variables下 ,单击新build。
- inputvariables名称为JAVA_HOME 。
- inputvariables值作为Java Development Kit的安装path。
- 点击OK 。
- 点击应用更改 。
注意:您可能需要重新启动Windows
完整的文章在这里,在我的博客上: 在Windows中设置JAVA_HOMEvariables 。
获取video解决scheme
我的工作是将%JAVA_HOME%\bin
到Path环境variables,其中JAVA_HOME
环境variables指向jdk
文件夹。
您必须先在您的系统中安装JDK 。
设置Java Home
JAVA_HOME = C:\ Program Files \ Java \ jdk1.7.0 [您的JDK安装目录的位置]
一旦你有了JDK安装path:
- 右键点击我的电脑图标
- select属性。
- 点击屏幕左侧的高级系统设置标签
- Aadvance Popup是开放的。
- 点击环境variablesbutton。
- 在系统variables下,单击新build。
- inputvariables名称为JAVA_HOME。
- inputvariables值作为Java Development Kit的安装path。
- 点击OK。
- 点击应用更改。
在系统variables下设置JAVApath
PATH = C:\ Program Files \ Java \ jdk1.7.0; [用分号附加值]
http://javahowto.blogspot.com/2006/05/javahome-vs-javahome.html
控制面板> Java,Java选项卡,单击查看button。 在运行时参数中,input:
-Djava.home=YOUR_PATH_HERE
或者当您执行Java时,您可以将该命令行开关添加到该命令:
java -Djava.home=PATH SomeJavaApp
在cmd中(临时用于该cmd窗口):
set JAVA_HOME="C:\\....\java\jdk1.x.y_zz" echo %JAVA_HOME% set PATH=%PATH%;%JAVA_HOME%\bin echo %PATH%
您需要将其设置为C:\Sun\SDK\jdk
(假设这是安装JDK的位置 – 不是默认设置) – 请勿将\ bin放在C:\Sun\SDK\jdk\bin
。
如果您的应用程序只在以当前用户身份login时才运行,请将其放入用户variables中 – 如果需要为系统上的所有用户运行,则将其放入系统variables中。
您可能还需要将%JAVA_HOME%\bin
添加到path中(也取决于是仅从用户还是从所有用户(包括System)运行它)
这是从www.java.com设置Java环境的官方解决scheme – 在这里 。
有Windows 7,Windows Vista,Windows XP,Linux / Solaris和其他shell的解决scheme。
例
Windows 7的
- 从开始菜单中select计算机
- 从上下文菜单中select系统属性
- 点击高级系统设置 – >高级选项卡
- 点击系统variables下的环境variables,findPATH,然后点击它。
- 在编辑窗口中,通过将类的位置添加到PATH的值来修改PATH。 如果您没有PATH项目,您可以select添加一个新variables,并添加PATH作为名称和类别的位置作为值。
- 重新打开命令提示窗口,然后运行你的Java代码。
对于那些仍然难住这个问题(我尝试了所有上述build议) –
如果您使用的是64位版本的Windows,并且已经安装了32位JDK,则除了调整PATH
variables之外,还可能需要调整registryvariables。
我正在拉我的头发,正确设置我的PATH
variables – 仍然无济于事 – 然后只在我的registry中find“腾空”的Java条目,似乎是修复“失火”的Java运行时环境的一个死路一条。
通过使用Process Monitor
观察我正在尝试开始的程序,为了窥探它在Java(运行时环境)registry中的位置,我高兴地发现它正在注册32位版本的registry项,在HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\JavaSoft\Java Runtime Environment
。
在这个关键字中,你应该find安装了不同Java版本(过去和/或现在)的子项。 点击最新版本的子项(例如我的子项目是1.7.0_25)。 点击该子项后,您将看到右侧列出的registrystring值,特别是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位)以及您正在使用的操作系统types – 32位或64位。 只要知道它们反映在registry中的不同位置(比如用于32位应用程序的Wow6432Node
,在我的情况下是在64位机器上安装了32位JDK)。
现在我已经更新了这两个registry值,我的程序运行完美无缺,没有更多的关于缺lessJava Runtime Environment(源自registry)的打扰或投诉。
Windows 7的
-
使用资源pipe理器(不是Internet Explorer!)转到控制面板\所有控制面板项目\用户帐户
要么
-
点击开始button
-
点击你的照片
-
-
更改我的环境variables
-
新…
(如果您没有足够的权限将其添加到“系统variables”部分,请将其添加到“用户variables”部分)
-
将JAVA_HOME添加为variables名称,将JDK位置添加为variables值>确定
testing:
- 打开一个新的控制台(CMD)
- 键入
set JAVA_HOME
- 预期输出:
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
- 预期输出:
一个图像可以解决这个问题。
更多
在Eclipse中: Window->Preferences->Java->Installed JREs
使用searchfunction确保您的最新Java安装已列出; 那么确保它是被检查的那个。 这应该是一个JDK而不是JRE。
将您的Java目录添加到您的PATH
variables中时,您可能需要将其放在开头。 我有这个问题,把Java目录放在PATH
的末尾是行不通的。 检查后,我发现我的Windows\System32
目录中的java.exe
,它看起来像第一个赢得,当有几个文件具有相同的名称在您的PATH
…
我们需要区分在这里交替讨论的两个环境variables。 一个是JAVA_HOMEvariables。 另一个是Pathvariables。 任何引用JAVA_HOMEvariables的进程都在寻findJDK而不是JRE的searchpath。 JAVA_HOMEvariables的使用不适用于Java编译器本身。 编译器知道它自己的位置。 该variables是为了让其他软件更容易find编译器。 这个variables通常被IDE软件用来编译和构build来自Java源代码的应用程序。 相比之下,Windows CMD解释器以及许多其他第一方和第三方软件引用了Pathvariables,而不是JAVA_HOMEvariables。
用例1:从CMD编译
因此,例如,如果您不使用任何IDE软件,而只是希望能够从CMD进行编译,而不依赖于当前的工作目录,那么您想要正确设置Pathvariables。 在你的情况下,你甚至不需要JAVA_HOMEvariables。 由于CMD使用Path,而不是JAVA_HOME来定位Java编译器。
使用案例2:从IDE进行编译
但是,如果您正在使用一些IDE软件,那么您首先必须查看文档。 可能需要设置JAVA_HOME,但也可能使用其他variables名称来达到同样的目的。 多年来的事实标准一直是JAVA_HOME,但并不总是如此。
使用案例3:从IDE和CMD编译
如果除了IDE软件之外,还希望能够从CMD编译,而不依赖于当前的工作目录,那么除了 JAVA_HOMEvariables之外 ,还可能需要将JDKsearchpath附加到Pathvariables。
JAVA_HOME与path
如果您的问题涉及到编译Java,那么您需要检查JAVA_HOMEvariables和Path(如果适用)。 如果你的问题涉及到运行Java应用程序,那么你想检查你的pathvariables。
pathvariables通用于所有操作系统。 由于它是由系统定义的,并且是用于定位JRE的默认variables,所以运行Java应用程序几乎不会有任何问题。 特别是在软件安装程序通常为您设置所有内容的Windows上。 但是,如果您正在手动安装,最安全的做法可能是完全跳过JAVA_HOMEvariables,对于JDK和JRE都使用Pathvariables。 任何最新版本的IDE软件都应该能够select并使用它。
符号链接
符号链接可以提供另一种通过捎带现有环境variables之一来引用JDKsearchpath的方式。
我不确定以前版本的Oracle / Sun JDK / JRE版本,但是至lessjdk1.8.0_74的安装程序将searchpathC:\ProgramData\Oracle\Java\javapath
到Pathvariables, 并将其放在string值的开始。 该目录包含JRE目录中的java.exe,javaw.exe和javaws.exe的符号链接。
所以至less在Java 8 JDK中,大概是Java 8 JRE独立版本,不需要为JRE完成环境variablesconfiguration。 只要您使用安装程序包进行设置即可。 但是,Windows安装可能存在差异。 请注意,Oracle JRE与JDK捆绑在一起。
如果你发现你的Java JDKconfiguration使用的是错误版本的编译器,或者它看起来像魔术一样工作,没有被明确地定义(不用施放这个咒语),那么你可能在你的环境variables中有一个符号链接。 所以你可能要检查符号链接。
以pipe理员身份运行Eclipse 。
这解决了我的问题。 我仍然在挖掘它背后的逻辑。
如果您在安装jdk后没有重新启动计算机,请重新启动计算机。
如果你想在使用java之前制作一个可移植的 java并设置path,只需要创build一个batch file,我将在下面解释。
如果你想运行这个batch file,当你的计算机启动只需把你的batch file快捷方式启动文件夹。 在Windows 7启动文件夹是“C:\ Users \ user \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup”
像这样创build一个batch file:
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
是variables。 你可以根据你的意愿制作任何variables。 例如set amir=good_boy
,你可以通过%amir%
看到amir,或者你可以看到java_home通过%java_home%
在这里大部分的解决scheme经过几个小时的工作后,只要安装32位的JDK,问题就解决了。