27
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-jdk

Then 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 4

24

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
14

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:
12

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.

1
  • 7
    What if it is not installed properly. I don't see javac in the directory itself. Feb 8, 2016 at 14:15
3

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-jdk

Afterwhich set the configurations by following the prompt:

sudo update-alternatives --config java
sudo update-alternatives --config javac

Then you can check if you configured correctly with:

java -version
javac -version

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.