JAVA_HOME and PATH are set but java -version still shows the old one
While it looks like your setup is correct, there are a few things to check:
- The output of
env
- specificallyPATH
. command -v java
tells you what?- Is there a
java
executable in$JAVA_HOME\bin
and does it have the execute bit set? If notchmod a+x java
it.
I trust you have source
'd your .profile
after adding/changing the JAVA_HOME
and PATH
?
Also, you can help yourself in future maintenance of your JDK installation by writing this instead:
export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=$JAVA_HOME/bin:$PATH
Then you only need to update one env variable when you setup the JDK installation.
Finally, you may need to run hash -r
to clear the Bash program cache. Other shells may need a similar command.
Cheers,
update-java-alternatives
The java
executable is not found with your JAVA_HOME
, it only depends on your PATH
.
update-java-alternatives
is a good way to manage it for the entire system is through:
update-java-alternatives -l
Sample output:
java-7-oracle 1 /usr/lib/jvm/java-7-oracle
java-8-oracle 2 /usr/lib/jvm/java-8-oracle
Choose one of the alternatives:
sudo update-java-alternatives -s java-7-oracle
Like update-alternatives
, it works through symlink management. The advantage is that is manages symlinks to all the Java utilities at once: javac
, java
, javap
, etc.
I am yet to see a JAVA_HOME
effect on the JDK. So far, I have only seen it used in third-party tools, e.g. Maven.