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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .