142

I pointed the JAVA_HOME to C:\Program Files (x86)\Java\jre7. It works fine. Afterwards, I unzipped ant and set up the environment variables related to Ant, I got the following error messages after typing "ant -version"

image

I searched this forum. Looks like one solution is to point Java to JDK instead of JRE. I am not exactly sure whether this should be the solution. In other words, in general, which one should JAVA_HOME point to? JDK or JRE?

0

8 Answers 8

150

If you're doing any sort of development, or building with Maven or Ant, you need to point to the JDK (Java Development Kit) where utilities such as javac (the Java Compiler) reside. Otherwise, you can point to the JRE (Java Runtime Environment).

The JDK contains everything the JRE has and more. If you're just executing Java programs, you can point to either the JRE or the JDK.

Sign up to request clarification or add additional context in comments.

5 Comments

So JAVA_HOME is used to do two things: 1: for development tools, finding javac.exe. 2: for nondevelopment tools, finding java.exe. This seems to violate "one tool for one thing". Shouldn't JDK_HOME be used instead?
Diagram on this site shows the relationship between JDK and JRE. docs.oracle.com/javase/8/docs
Is it possible to validate pro-grammatically whether the Java path is set as JRE or JDK?
So it has to point to the bin directory where javac resides?
Confusingly (for me at least), this meant setting it to /usr when I wanted it to find the javac at /usr/bin/javac, so you need the directory outside the bin directory that contains your jdk executables.
19

Simply (change to your jdk1.x.x.x_xx)

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_05

2 Comments

There's no javac.exe in this directory (it's under bin) so how can this be correct?
How about in Mac?
6

My JAVA_HOME points to the JDK. If it still doesn't work, check if you downloaded ant for Java 7 and not for Java 6.

Comments

5

Generally, it does not matter if you point it at JRE or JDK. It depends on the application which uses it. Ant documentation says you should point it at JDK to get all Ant's features.

Comments

3

as a developer, you should point your JAVA_HOME at jdk to access javac copiler etc. It's good if you can test your program to run on the JRE though. If you are using an app server you often also need the JDK instead of the JRE but that depends on the particular server.

Comments

3

You can use either the JDK or the JRE but:

JAVA_HOME is used by the launcher for finding the JDK/JRE to use. (JDK is recommended as some tasks require the java tools.)
. ANT_HOME setting

Comments

3

For people late to the party and learning it now, it doesn't matter now since new JDK versions don't have separate JRE folder. So, we can point to JDK and be done with it.

Comments

1

Let's keep it simple. Go to settings and search "Environment Variables". Once environment variables window pops up, simply create a new SYSTEM variable by clicking on NEW and then BROWSE DIRECTORY until you locate the install path of the JDK. The JDK should be installed in program files and you will see a JAVA folder and inside the folder is JDK and JRE... If you write code you must select JDK!!! Do not listen to anyone stating JRE will suffice... NO! It will NOT! The proper directory should look like this C:\Program Files\Java\jdk1.8.0_144 it's as simple as that!

1 Comment

@Stephan The existing answers already provide the information I took the time to provide. That is your justification for downvoting? This is the problem with many of these threads. For one, just because the basic principle was answered doesn’t mean the answer was well formed or even helpful. My answer is not at all the same as the previous responses. The answer I provided, came with precise instructions

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.