How to Set Up Your Java_Home Path in Ubuntu
This article was co-authored by wikiHow staff writer, Travis Boylls. Travis Boylls is a Technology Writer and Editor for wikiHow. Travis has experience writing technology-related articles, providing software customer service, and in graphic design. He specializes in Windows, macOS, Android, iOS, and Linux platforms. He studied graphic design at Pikes Peak Community College.
The wikiHow Tech Team also followed the article’s instructions and verified that they work.
This article has been viewed 443,757 times.
This wikiHow teaches you how to set your JAVA_HOME Environment path. This is where Java Development Kit (JDK) is installed on your computer. Java is one of the most popular programming languages. It is used to run everything from desktop graphic user interfaces, mobile applications, web applications, as well as business and scientific applications. Many applications that run Java or are being developed in JDK need to know where the JAVA_HOME Environment path is located.
Launch the Terminal. To open the Terminal in Ubuntu, press Ctrl + Alt + T or open the Dash and click the icon that resembles a black screen with a text prompt on it.
- If Java has not been installed, type sudo apt-get install openjdk-9-jre-headless -y and press ↵ Enter
Look to see where Java is installed. You can use the install location to set the Java_Home path. For example, if most of the return outputs are «/usr/lib/jvm/java-9-openjdk-amd64», we would use this path to set the Java_Home pather.
Type export JAVA_HOME= followed by the Java installation path. In our previous example, we would type export JAVA_HOME=»/usr/lib/jvm/java-9-openjdk-amd64″ . This temporarily sets the Java_Home path. However, if the system is restarted, it will be lost.
Type echo «JAVA_HOME=’ followed by the installation path. Using the above example, we would type echo «JAVA_HOME=’/usr/lib/jvm/java-9-openjdk-amd64′» .
- Alternatively, if you do not have root access, you can type echo «JAVA_HOME=’java installation path'» >> .bashrc and press ↵ Enter to set the Java_Home path. [1] X Research source
Community Q&A
Thanks! We’re glad this was helpful.
Thank you for your feedback.
As a small thank you, we’d like to offer you a $30 gift card (valid at GoNift.com). Use it to try out great new products and services nationwide without paying full price—wine, food delivery, clothing and more. Enjoy! Claim Your Gift If wikiHow has helped you, please consider a small contribution to support us in helping more readers like you. We’re committed to providing the world with free how-to resources, and even $1 helps us in our mission. Support wikiHow
Then Java is already installed in your system. You can change the current JAVA_HOME if you want to update it.
Thanks! We’re glad this was helpful.
Thank you for your feedback.
As a small thank you, we’d like to offer you a $30 gift card (valid at GoNift.com). Use it to try out great new products and services nationwide without paying full price—wine, food delivery, clothing and more. Enjoy! Claim Your Gift If wikiHow has helped you, please consider a small contribution to support us in helping more readers like you. We’re committed to providing the world with free how-to resources, and even $1 helps us in our mission. Support wikiHow
If you installed Java from APT, as is usually done on Ubuntu, you need to find which exact Java package you installed first. It’s usually either some Oracle JDK or GCJ. You can use «dpkg —get-selections» to list all packages and the «grep» command to find the package in it. Then, you should write «sudo apt-get install —only-upgrade packageName», with packageName being the name of the package you found.
Thanks! We’re glad this was helpful.
Thank you for your feedback.
As a small thank you, we’d like to offer you a $30 gift card (valid at GoNift.com). Use it to try out great new products and services nationwide without paying full price—wine, food delivery, clothing and more. Enjoy! Claim Your Gift If wikiHow has helped you, please consider a small contribution to support us in helping more readers like you. We’re committed to providing the world with free how-to resources, and even $1 helps us in our mission. Support wikiHow
How to Set JAVA_HOME Variable in Ubuntu Linux Correctly
If you are running Java programs on Ubuntu using Eclipse, Maven or Netbeans etc, you’ll need to set JAVA_HOME to your path. Otherwise, your system will complain that “java_home environment variable is not set”.
In this beginner’s tutorial, I’ll show the steps to correctly set Java Home variable on Ubuntu. The steps should be valid for most other Linux distributions as well.
The process consists of these steps:
- Making sure Java Development Kit (JDK) is installed.
- Finding the correct location of JDK executable.
- Setting the JAVA_HOME variable and making the change permanent.
Step 1: Check if JDK is installed
The simplest way to check if Java Development Kit (JDK) is installed on your Linux system is by running this command:
The above command checks the version of Java compiler. If it is installed, it will show the Java version.
If the command shows an error like javac command not found, you’ll have to install JDK.
If Java Compiler is not installed on your system, install Java Development Kit using this command:
sudo apt install default-jdk
This will install the default Java version in your current Ubuntu version. If you need some other specific Java version, you’ll have to specify it while installing Java on Ubuntu.
Once you have made sure that Java Compiler is present on your system, it’s time to find its location.
Step 2: Get the location of JDK executable (Java Compiler)
The executable is usually located in the /usr/lib/jvm directory. I won’t left you on your own for a guessing game. Instead, let’s find out the path of the Java executable.
Use the which command to get the location of Java Compiler executable:
The problem here is that the location it gives is actually a symbolic link. You’ll have to follow it a couple of times:
And when you find a path like /usr/lib/jvm/java-11-openjdk-amd64/bin/javac, you remove the /bin/javac from it to get something like /usr/lib/jvm/java-11-openjdk-amd64
An easier method is to follow the symbolic link and get to the actual executable file directly using this command:
readlink -f `which javac` | sed "s:/bin/javac::"
The readlink command follows a symbolic link. I have used ` around which java. This is called command substitution and it replaces the command with its output. Sed is then used to replace /bin/javac by nothing and thus removing it altogether.
In my example, the location of the executable file is /usr/lib/jvm/java-11-openjdk-amd64. It could be different for you. Copy the correct path you got from the above command in your system. You know, you can copy paste in the Ubuntu terminal.
Step 3: Setting JAVA_HOME variable
Now that you have got the location, use it to set the JAVA_HOME environment variable:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java
Check the value of JAVA_HOME directory:
Try to run your program or project in the SAME TERMINAL and see if it works.
This is not over yet. The JAVA_HOME variable you just declared is temporary. If you close the terminal or start a new session, it will be empty again.
To set JAVA_HOME variable ‘permanently’, you should add it to the bashrc file in your home directory.
You can use the Nano editor for editing files in the Linux terminal. If you do not want that and take a simple copy-paste approach, use the following commands:
Back up your bashrc file (in case you mess it, you can get it back):
Next, use the echo command to append the export command you used at the beginning of this section. Change the command below to use the correct path as displayed by your system in.
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" >> ~/.bashrc
Verify that it has been correctly added to the end of the file:
The above tail command will show the last 3 lines of the specified file.
Here’s the entire output of the above three commands.
Now, even if you exit the session or restart the system, the JAVA_HOME variable will still be set to the value you specified. That’s what you want, right?
Do note that if you change the default Java version in the future, you’ll have to change the value of JAVA_HOME and point it to the correct executable path.
I hope this tutorial not only helped you to set Java Home, it also taught you how you are doing it.
If you are still facing issues or have any questions or suggestions, please let me know in the comments.
How to find path where jdk installed?
I’ve installed jdk1.7.0.rpm package in RHEL6.
Where I do find the path to execute my first java program?
Hi, Mohammad. It’s not a stupid question, but one that has been answered in several places already — like this or this question.
Just an PS: on MacOS, Java is usually installed at ‘/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home’, where the version number could be different.
4 Answers 4
For your first java program read this tutorial:
Note these commands give different results. If you are interested in the non-symlink path use whereis java.
I don’t really think this answers the question. The java binary gets installed with the JRE, but if you’re doing development you need JDK, which isn’t necessarily installed in which java (which in my case is /usr/bin).
On RHEL7, you can use locate :
and it led me to the /usr/lib/jvm/ directory which contained the directories:
java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/ jre/ jre-1.8.0/ jre-1.8.0-openjdk/ jre-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/ jre-openjdk/
Each of these contain a bin/java
To find the full path of the symbolic link use:
This gave me mostly JDK6 even though java -version gave me 1.8. There was one link to the JDK8 folder near the top.
You can list the installed files with
You will see somewhere a bin directory with java executable
But if the JDK RPM was correctly installed you should already find java in you path.
javac MyFirstJavaClass.java
and if everything compiles
(If you didn’t change anything the current directory . should already be in your class path)
Since this question is RPM specific, rpm is the way to get started (as answered by @Matteo).
-q is short for --query -l is short for --list
rpm -ql jdk1.8.0_20 | grep "jdk1.8.0_20/bin$"
Knowing this may be desirable for setting a user or application’s $JAVA_HOME variable. This is often needed when a system has multiple versions of java installed, or multiple distributions of java installed, such as OpenJDK and Oracle/Sun.
$JAVA_HOME Example
In the ~/.bash_profile , or related file ( .bashrc , .zshrc , .cshrc , setenv.sh ), something similar to the below may be used.
JAVA_HOME='/usr/java/jdk1.8.0_20' export JAVA_HOME PATH="$JAVA_HOME/bin:$PATH" export PATH
If you would like more control over where Java gets installed, such as in /opt , then the tarball can be used instead of the RPM file.
Other similar questions, are asking about how to find any binary or file, in the general case.