ChatGPT解决这个技术问题 Extra ChatGPT

How to set java_home on Windows 7?

I went to the Environment Variables in 'System' in the control panel and made two new variables, one for user variables and one for system variables. Both were named JAVA_HOME and both pointing to

C:\Sun\SDK\jdk\bin

But for some reason, I still get the below error when running a Java command...

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

How can I fix this problem?

You closed cmd and reopened it? Also it looks like you are pointed to the JRE not the JDK. Have you installed the JDK?
I have definitely installed the JDK and it's located in C:\Sun\SDK\jdk\bin which I have set java_home to.
I've even restarted.........a few times since........
Still it seems to be looking in C:\Program Files\Java\jre6\lib\ c Can you do echo %JAVA_HOME% in your command prompt and see what it reports
The solution is: Omit /bin

K
KarSho

Find JDK Installation Directory

First you need to know the installation path for the Java Development Kit.

Open the default installation path for the JDK:

C:\Program Files\Java

There should be a subdirectory like:

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

Note: one has only to put the path to the jdk without /bin in the end (as suggested on a lot of places). e.g. C:\Java\jdk1.8.0_172 and NOT C:\Java\jdk1.8.0_172\bin !

Set the JAVA_HOME Variable

Once you have the JDK installation path:

Right-click the My Computer icon on your desktop and select Properties. Click the Advanced tab, then click the Environment Variables button. Under System Variables, click New. Enter the variable name as JAVA_HOME. Enter the variable value as the installation path for the Java Development Kit. Click OK. Click Apply Changes.

Note: You might need to restart Windows

The complete article is here, on my blog: Setting JAVA_HOME Variable in Windows.


thanks. finally I realized that one has only to put the path to the jdk without /bin in the end (as suggested on alot of places). e.g. C:\Java\jdk1.6.0_31 and NOT C:\Java\jdk1.6.0_31\bin !
God forbid there was an installer that did this step for you :) I just switched from the Enterprise version to the Community version and I was convinced I downloaded the wrong thing because it was one-click on the Enterprise version :p
Sometimes, the system varible changes does not take effect until you restart the windows.
A quicker method is to hit Start, then start typing environment variables
/Java/jre* is not JDK directory, this is Java Runtime Enviroment diretory. JDK is in a separate directory unless you want to do some crazy hack
P
Peter Mortensen

What worked for me was adding the %JAVA_HOME%\bin to the Path environment variable with the JAVA_HOME environment variable pointing to the jdk folder.


C
Community

You have to first Install JDK in your system.

Set Java Home

JAVA_HOME = C:\Program Files\Java\jdk1.7.0 [Location of your JDK Installation Directory]

Once you have the JDK installation path:

Right-click the My Computer icon on

Select Properties.

Click the Advanced system setting tab on left side of your screen

Aadvance Popup is open.

Click on Environment Variables button.

https://i.stack.imgur.com/Anr7F.png

Under System Variables, click New.

Enter the variable name as JAVA_HOME.

Enter the variable value as the installation path for the Java Development Kit.

Click OK.

Click Apply Changes.

Set JAVA Path under system variable

PATH= C:\Program Files\Java\jdk1.7.0; [Append Value with semi-colon]

https://i.stack.imgur.com/ueORN.png


Should JAVA_HOME contain "\bin"? Other answers here seem to suggest "bin" should be included for PATH but not for JAVA_HOME.
JAVA_HOME should NOT contain \bin.
[PLUS ONE] Nice flowers!
But on Image you enter with \bin.
S
Stéphane GRILLON

In cmd (temporarily for that cmd window):

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

echo %JAVA_HOME%

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

echo %PATH%

True. If you use setx then the JAVA_HOME will still be set after you have shutdown your computer. Then you don't have to set it again. Also bin is not needed.
Yes, but if you don’t want to officially install Java, then as sgrillon said, you can set it temporarily for that instance. Better yet, create a batch file that you can run to open a command-prompt window and set JAVA_HOME, PATH, and CLASSPATH, then you can have a “portable” Java environment.
It's true but " " are not needed for setting the JAVA_HOME address
@Aboozar Rajabi, You need " " if ... path contain a space char.
S
SkyWalker

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)


R
Ricket

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

Control Panel > Java, Java tab, click the View button. In Runtime Parameters, put:

-Djava.home=YOUR_PATH_HERE

Or when you execute Java you can add that command line switch to the command:

java -Djava.home=PATH SomeJavaApp

Th control panel thing seems to apply for the commercial version of Java only. Not for the GPL version.
K
KarSho

https://i.stack.imgur.com/aez4M.jpg

For More


C
Coldblackice

For those who are still stumped with this problem (I tried all the above suggestions) --

If you're on a 64-bit version of Windows and you've installed the 32-bit JDK, besides adjusting PATH variables, you may need to adjust registry variables, too.

I was pulling my hair out, having correctly set my PATH variables -- still to no avail -- and then only finding "vacated" Java entries in my registry, seemingly a deadend of fixing the "misfiring" Java Runtime Environment.

By using Process Monitor to watch the program I was trying to get started, in order to sniff out where it was looking in the registry for Java (Runtime Environment), I triumphantly discovered that it's looking in the 32-bit version of registry entries, found in HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\JavaSoft\Java Runtime Environment.

Within that key, you should find subkeys of different Java versions installed (past and/or present). Click on the subkey of the latest version (my subkey is currently 1.7.0_25, for example). After clicking on that subkey, you'll see registry string values listed on the right, and particularly, JavaHome and RuntimeLib. You need to modify the values of those two values to reflect the both the current folder and jvm.dll file, respectively.

For example, in my case, the values were (previously) respectively set at C:\Program Files (x86)\Java\jre7 and C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll which are nonexistent on my machine. I had to update these to the current folder and file of C:\Program Files (x86)\Java\jdk1.7.0_25\jre and C:\Program Files (x86)\Java\jdk1.7.0_25\jre\bin\client\jvm.dll.

Again, this will depend entirely on both what version of Java (JDK and/or JRE) you have installed -- 32 or 64-bit -- and what type of operating system you're on -- 32 or 64-bit. Just know that they're reflected in different locations within the registry (like the Wow6432Node for 32 bit applications, in my case with the 32-bit JDK installed on a 64-bit machine).

Now that I've updated those two registry values, my program runs flawlessly, with no more hiccups or complaints about a missing Java Runtime Environment (stemming from the registry).


I am on 64-bit windows 7 machine and I have both : C:\Program Files (x86)\Java\ and C:\Program Files\Java\ Now my question is that which one should my java_home point to ?
Interesting; I only have the Java folder beneath the x86 folder.
Under C:\Program Files (x86)\Java\jdk1.7.0_25\jre\bin I dont have directory client, it only exist under C:\Program Files (x86)\Java\jre7\bin. What should I do?
On windows 7, after searching for keyword "1.8.0_74", I found multiple registries using regedit in HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit/1.8.0_74/ or ../1.8.0_65 and all other installed previously... After deleting one by one registry from bottom to my latest installed java 1.8.0_112, now YourKit java profiler (profiler.exe) works without error: "Error occured while starting C:\Program Files\Java\jdk1.8.0_74\bin\javaw.exe" .
P
Peter Mortensen

This is the official solution for setting the Java environment from www.java.com - here.

There are solutions for Windows 7, Windows Vista, Windows XP, Linux/Solaris and other shells.

Example

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.


The official instructions are useless. They only give generic instructions on how to set environment variables rather than indicating the value that needs to be set. They simply say to set it to “the location of the class” which is confusing and meaningless.
These instructions do not set JAVA_HOME, an entirely separate variable from PATH that is required for some programs.
R
ROMANIA_engineer

Windows 7

Go to Control Panel\All Control Panel Items\User Accounts using Explorer (not Internet Explorer!) or click on the Start button click on your picture Change my environment variables New... (if you don't have enough permissions to add it in the System variables section, add it to the User variables section) Add JAVA_HOME as Variable name and the JDK location as Variable value > OK

Test:

open a new console (cmd)

type set JAVA_HOME expected output: JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60

expected output: JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60


S
Samir

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.

Use case 1: Compiling from CMD

So for instance, if you are not using any IDE software, and you just want to be able to compile from the CMD, independent of your current working directory, then what you want is to set the Path variable correctly. In your case, you don't even need the JAVA_HOME variable. Because CMD is using Path, not JAVA_HOME to locate the Java compiler.

Use case 2: Compiling from IDE

However, if you are using some IDE software, then you have to look at the documentation first of all. It may require JAVA_HOME to be set, but it may also use another variable name for the same purpose. The de-facto standard over the years has been JAVA_HOME, but this may not always be the case.

Use case 3: Compiling from IDE and CMD

If in addition to the IDE software you also want to be able to compile from the CMD, independent of your current working directory, then in addition to the JAVA_HOME variable you may also need to append the JDK search path to the Path variable.

JAVA_HOME vs. Path

If your problem relates to compiling Java, then you want to check the JAVA_HOME variable, and Path (where applicable). If your problem relates to running Java applications, then you want to check your Path variable.

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.

Symlinks

Symbolic links may provide yet another way to reference the JDK search path by piggybacking one of the existing environment variables.

I am not sure about previous versions of Oracle/Sun JDK/JRE releases, but at least the installer for jdk1.8.0_74 appends the search path C:\ProgramData\Oracle\Java\javapath to the Path variable, and it puts it at the beginning of the string value. This directory contains symbolic links to the java.exe, javaw.exe and javaws.exe in the JRE directory.

So at least with the Java 8 JDK, and presumably the Java 8 JRE standalone, no environment variable configuration needs to be done for the JRE. As long as you use the installer package to set it up. There may be differences on your Windows installation however. Note that the Oracle JRE comes bundled with the JDK.

If you ever find that your Java JDK configuration is using the wrong version of the compiler, or it appears to be working by magic, without being explicitly defined so (without casting the spell), then you may have a symlink somewhere in your environment variables. So you may want to check for symlink.


d
daemonThread

goto Mycomputer(This PC) -> rightclick ->select properties -> Advanced system settings -> environment variables-> in system variables click "New" button and write JAVA_HOME in variable name and path C:\Program Files\Java\jdk1.8.0_131 were jdk is present in variable value-> click ok.

close and reopen the command prompt after setting JAVA_HOME. Sometimes changes does not reflect in the cmd opened before setting the JAVA_HOME.

you can also set JAVA_HOME through terminal itself: SET JAVA_HOME="C:\Program Files (x86)\Java\jdk1.8.0_131"


D
David G

In Eclipse: Window->Preferences->Java->Installed JREs

Use the search feature to make sure your latest Java installation is listed; then make sure it is the one that is checked. This should be a JDK not a JRE.


These instructions do not set JAVA_HOME, which is not related to eclipse.
M
Martin Prikryl

While adding your Java directory to your PATH variable, you might want to put it right at the beginning of it. I've had the problem, that putting the Java directory at the end of the PATH would not work. After checking, I've found java.exe in my Windows\System32 directory and it looks like the first one wins, when there are several files with the same name in your PATH...


When/if you install Java with the installer, it will replace the copies of java.exe and javaw.exe in the system folders with the copies from the JRE/JDK, so it should still work. If you install it manually (just unpack the archives), then you will indeed have to watch out for which copy is being run.
These instructions do not set JAVA_HOME, an entirely separate variable from PATH that is required for some programs.
P
Peter Mortensen

Run Eclipse as Administrator.

That solved my problem. I'm still digging for the logic behind it.


I can't say I understand this exactly, but maybe eclipse is actually just giving the wrong error message here. When you run it as a non-admin, it can't delete the .jar files or something and then falsely reports that it didn't find javac. Anyway, this solution worked for me too.
if you are running Eclipse in windows server 2012 R2 as is in my case, running eclipse as administrator works for me. Remember also to set the java_home to the program files folder and not the program (86) files folder. Hope this one helps some one.
A
Amir

if you have not restarted your computer after installing jdk just restart your computer.

if you want to make a portable java and set path before using java, just make a batch file i explained below.

if you want to run this batch file when your computer start just put your batch file shortcut in startup folder. In windows 7 startup folder is "C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

make a batch file like this:

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

note: java_home and path are variables. you can make any variable as you wish. for example set amir=good_boy and you can see amir by %amir% or you can see java_home by %java_home%


P
Peter Mortensen

After hours of work around most of the solutions here, the problem was solved for me just by installing 32-bit JDK.


Which is fine if that's what you want, but some people prefer not to actually install Java and just set up a “portable” environment manually, in which case, you need to know what environment variables need to be set.
C
Camilo

You may wanna look into Windows/System32 folder for the following files: - 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.

This also means that it is better to install Java manually, without an installer, so you are able to toy with it.