apt-get install openjdk-7-jdk doesn't install javac. Why?
The program 'javac' can be found in the following packages: * openjdk-6-jdk * ecj * gcj-4.4-jdk * gcj-4.6-jdk * gcj-4.5-jdk * openjdk-7-jdkThen I run sudo apt-get install openjdk-7-jdk and everything works. But then javac still does not exist and I get the same error as above. Same thing with openjdk-6-jdk. Why?
4 Answers
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 javacOr you can specify which option you want on the command-line:
sudo update-alternatives --set javac /usr/lib/jvm/java-7-openjdk/bin/javacBecause 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.
Not sure if this helps, but it worked for me. I had this problem, javac was simply not there, anywhere, probably because I only installed the jre. Installing the jdk after the jre fixed it.
sudo apt-get install openjdk-8-jre
sudo apt-get install openjdk-8-jdkAfterwhich set the configurations by following the prompt:
sudo update-alternatives --config java
sudo update-alternatives --config javacThen you can check if you configured correctly with:
java -version
javac -version