apt-get install openjdk-7-jdk doesn't install javac. Why?
The proper Debian/Ubuntu way to configure which javac
is pointed to by /usr/bin/javac
is to use the update-alternatives
command. You can do it interactively, and select from a list of available options:
sudo update-alternatives --config javac
Or you can specify which option you want on the command-line:
sudo update-alternatives --set javac /usr/lib/jvm/java-7-openjdk/bin/javac
Because of the way it stores the information, using update-alternatives
is not exactly equivalent (but instead is considered preferable) to manually making /usr/bin/java
a symbolic link to your javac
of choice. See man update-alternatives
for more information about this.
If update-alternatives
doesn't work, then run this command and try again:
sudo ln -s /etc/alternatives/javac /usr/bin/javac
Here's what I did. It worked.
First I installed the jdk for Java 7 like this:
sudo apt-get install openjdk-7-jdk
That might be enough: check and see if javac in your PATH by running javac -version
If not, then follow Nicholas' answer except that instead of sudo update-alternatives --config javac
use this:
sudo update-alternatives --config java
And selected Java 7 at at the the prompt by typing 2
:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 auto mode
1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
* 2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 manual mode
Press enter to keep the current choice[*], or type selection number:
As long as the install completed without errors, there is a javac executable on your system; it for some reason just didn't get correctly linked to /usr/bin. sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javac /usr/bin/javac
will create that link and should fix your problem.