13

I'm trying to set the Java SDK 8 tools (installed from the debian backports repo) as the defaults.

# update-java-alternatives --list
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

# update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64
update-alternatives: error: no alternatives for mozilla-javaplugin.so
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so

Hum, well aside from that error (which I am lead to believe is merely a warning according to https://askubuntu.com/questions/141791/is-there-a-way-to-update-all-java-related-alternatives . If not, I don't know how to fix this, as there is no icedtea plugin for jdk8 that I can see), this should have done the trick, right?

But many Java tools still point to Java 7:

# update-alternatives --get-selections | grep java
appletviewer                   manual   /usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer
extcheck                       auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/extcheck
idlj                           auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/idlj
jar                            auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/jar
jarsigner                      auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/jarsigner
java                           manual   /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
javac                          auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
javadoc                        auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/javadoc
...

What gives? Broken?

EDIT:

Worked around this with:

for i in `update-alternatives --get-selections | grep java | awk '{print $1}'`; do update-alternatives --config $i; done

This will manually prompt you for each and every tool. Which takes about a minute. Still, I would like to know if there is a better way.

Edd Barrett
  • 943
  • 3
  • 9
  • 19

6 Answers6

14

update-java-alternatives has options to update --jre-headless, --jre, and --plugin separately.

Using

sudo update-java-alternatives --jre-headless --jre --set java-1.8.0-openjdk-amd64

worked for me on a Debian Jessie server with no plugin installed.

hfs
  • 755
  • 9
  • 10
5

The easiest way to achieve this in Debian is using this command

update-alternatives --config java

Then you will get a output like this:

*0  /usr/lib/jvm/java-8-openjdk-amd64/bin/java  auto mode
 1  /usr/lib/jvm/jdk1.7.0/bin/java              manual mode

Then you can change your default selection (marked with "*") by typing the index number. For example you select "1" in order to use Java 7 as default JVM. You can run the command again in order to check changes.

Hope it helps.

patan90
  • 141
  • 1
  • 5
5

In ubuntu, JDK1.8 does not stay installed by default. When you list for java alternatives

$ update-java-alternatives -l
java-1.11.0-openjdk-amd64      1101       /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
java-7-oracle                  1082       /usr/lib/jvm/java-7-oracle

java-1.8.0-openjdk-amd64 in this list is not JDK, but JRE instead. JRE doesn't contain all the necessary development tools like javac, javadoc, etc. You can verify if the bin directory contains these files. This is the reason of not registering these tools.

So, first you have to install JDK

sudo apt install openjdk-8-jdk

And then change the alternative

sudo update-java-alternatives -s java-1.8.0-openjdk-amd64
misbah
  • 51
  • 1
  • 1
2

For Linux (e.g. Debian):

# update-alternatives --config java
# update-alternatives --config javac
# update-alternatives --config javaws

Example:

$ sudo update-alternatives --config java
There are 4 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-10-oracle/bin/java             1091      auto mode
* 1            /usr/lib/jvm/java-10-oracle/bin/java             1091      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1081      manual mode
  4            /usr/lib/jvm/jdk1.7.0_80/bin/java                1         manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode
CamelTM
  • 121
  • 2
0

Thanks @patan90 your solution worked like wonder

root@getsetlive:/usr/lib/jvm# update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status

  • 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 auto mode 1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
0

You have to change the java home variable for java 8 in below file

  'vi /etc/environment'

In this format

JAVA_HOME- /usr/lib/jvm/java-8-oracle

Reload the config file using

'. /etc/environment'

And confirm by this

   echo  $JAVA_HOME
SuperKrish
  • 105
  • 3