Should JAVA_HOME point to JDK or JRE?
Asked Answered
R

8

137

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?

Recalcitrate answered 11/7, 2013 at 19:31 Comment(0)
P
145

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.

Papillote answered 11/7, 2013 at 19:43 Comment(5)
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?Binky
Diagram on this site shows the relationship between JDK and JRE. docs.oracle.com/javase/8/docsTopper
Is it possible to validate pro-grammatically whether the Java path is set as JRE or JDK?Penchant
So it has to point to the bin directory where javac resides?Dobsonfly
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.Claxton
I
18

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

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

Intransigence answered 25/4, 2016 at 17:41 Comment(2)
There's no javac.exe in this directory (it's under bin) so how can this be correct?Dobsonfly
How about in Mac?Ez
H
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.

Hosanna answered 11/7, 2013 at 19:36 Comment(0)
A
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.

Ansermet answered 11/7, 2013 at 19:37 Comment(0)
P
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.

Pulley answered 11/7, 2013 at 19:38 Comment(0)
W
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
Windsail answered 11/7, 2013 at 19:59 Comment(0)
P
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.

Pleione answered 27/10, 2020 at 15:15 Comment(0)
A
0

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!

Appel answered 30/7, 2017 at 12:57 Comment(1)
@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 instructionsAppel

© 2022 - 2024 — McMap. All rights reserved.