Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.
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?

share|improve this question

3 Answers 3

up vote 4 down vote accepted

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.

share|improve this answer

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
share|improve this answer

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:
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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