Setting the JAVA_HOME environment variable in Ubuntu
Asked Answered
S

9

11

I'm pretty new on ubuntu, at some point in the terminal I'm running:

mortar local:illustrate pigscripts/retail-recsys.pig purchase_input -f params/retail.params

but I have this following error:

A suitable java installation could not be found. If you already have java installed
please set your JAVA_HOME environment variable before continuing. Otherwise, a suitable java installation will need to be added to your local system.

Installing Java

On OSX run javac from the command line. This will intiate the installation. For Linux systems please consult the documentation on your relevant package manager.

But I'm pretty sure I have Java, so please how can I set my JAVA_HOME environment variable?

Sun answered 17/4, 2014 at 4:35 Comment(1)
I did some mousing around, and I found this document page related to Mortar. I'm willing to bet that's what you want to use to export your JAVA_HOME when you're running/installing it.Pendant
D
20

First, you need to decide which installed version of Java to use? No fear, you can pick any you have -

update-java-alternatives -l

One "easy" solution is to add this to "$HOME/.bashrc",

export JAVA_HOME=$(update-java-alternatives -l | head -n 1 | awk -F ' ' '{print $NF}')

This picks the first installed JDK and takes it's JAVA_HOME (the third field) - on my system that's

/usr/lib/jvm/java-1.7.0-openjdk-amd64
Derogate answered 17/4, 2014 at 4:45 Comment(4)
this is only a temporary solution, and will get cleared upon reboot.Trotter
@Trotter No, if you add it to ".bashrc" it will not.Derogate
On Ubuntu 14.04, a symlink /usr/lib/jvm/default-java was created when I installed jdk via apt. I used this for the JAVA_HOME environment variable.Hypocrisy
I needed to update this solution for Ubuntu 16.4 to take out the multiple spaces between the 3 parts. So I use export JAVA_HOME=$(update-java-alternatives -l | head -n 1 | sed 's/ */ /g' | cut -f3 -d' ')Triplicate
V
6
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

in your ~/.bashrc file.

If you want this environment variable available to all users and on system start then you can add the following to /etc/profile.d/java.sh (create it if necessary):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Then in a terminal run:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
Valrievalry answered 17/4, 2014 at 4:39 Comment(0)
P
2

The simplest method to set environment variable is with export:

    $ export JAVA_HOME="/usr/bin"

This will temporarily set the desired variable. You can check if it was set with:

    $ echo $JAVA_HOME

or

    $ printenv

If you want a more permanent solution, append 'export JAVA_HOME="/usr/bin"' to .bashrc or .bash_profile file.

To check if java is properly installed:

    $ which java
    $ which javac

You should get similar output:

    /usr/bin/java
Peculium answered 17/4, 2014 at 4:45 Comment(4)
Why /usr/bin/java? What if I download jdk from Oracle into another directory?Trotter
Well, that was just a specific example :)Peculium
This is the best answer if you plan to use multiple versions of java. This allows you to use update-alternatives to set your java version, and it will work throughout.Camlet
It should be export JAVA_HOME=/usr, otherwise the system will look for the java executable in /usr/bin/bin.Precarious
F
2

For JAVA_HOME to point to the active jdk, add to your ~/.bashrc

export JAVA_HOME=$(update-alternatives --query javac | sed -n -e 's/Best: *\(.*\)\/bin\/javac/\1/p')

which will dynamically set the $JAVA_HOME to the JDK selected by update-alternatives.

Faletti answered 8/2, 2017 at 13:31 Comment(2)
Thank you so much this is the best answer :)Hurtful
In order to get the currently configured alternative, I think it should be: update-alternatives --query javac | sed -n -e 's/Value: *\(.*\)\/bin\/javac/\1/p'Hammack
A
1

put the line export JAVA_HOME=/usr/lib/jvm/java-xxx-oracle in your .profile file at home directory. Note that you have to replace xxx. You may need to logout and login again

Armhole answered 17/4, 2014 at 4:38 Comment(0)
C
1

In Debian/Ubuntu/Linux Mint, we could add to .bashrc export JAVA_HOME=$(update-java-alternatives -l | head -n 1 | sed 's/\s//g')

Carriole answered 25/4, 2019 at 12:44 Comment(0)
L
0

Normally you can set paths in

~/.bashrc

with export JAVA_HOME=/usr/lib/jvm/java-version

However you may followe instructions from here for a comprehensive instruction.

Laden answered 17/4, 2014 at 4:39 Comment(1)
I set it in .bashrc, but do I have to reboot?? It doesn't take effect.Trotter
D
-1

By far, the ultimate guide to doing this is here. You don't need to set PATH as much as you just need to adjust the default 'java alternative' location.

Dote answered 17/4, 2014 at 4:44 Comment(0)
W
-1

you can type java in terminal,if it does not work means your did not install java.if it works, type javac in terminal.if javac dose not work,you should set the java environment variable,if it works ,there maybe something wrong with you program.

Wiseacre answered 17/4, 2014 at 4:44 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.