Ich installiere Apache Solr unter Linux Debian (Squeeze). Ich wurde angewiesen, sun-java jdk 1st zu installieren. Dann wird mir gesagt, dass ich den Befehl verwenden soll sudo update-alternatives --config java
, um sicherzustellen, dass ein bestimmtes Java (Sun-Java) die Standardlaufzeit ist. Wenn ich diesen Befehl ausführe, erhalte ich jedoch:
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode
1 /usr/bin/gij-4.4 1044 manual mode
2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode
3 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
Press enter to keep the current choice[*], or type selection number:
Also, welche Nummer sollte ich auswählen, um Sun-Java als Standardlaufzeit zu haben? Was genau bedeuten die automatischen und manuellen Modi? Wenn ich oben 3 auswähle und den Befehl update-alternative ausführe, erhalte ich dieselbe Ausgabe wie oben, scheint sich wieder nichts geändert zu haben, außer dass das * jetzt vor der 3 steht, obwohl es immer noch den manuellen Modus liest.
Gibt es eine Möglichkeit zu bestätigen, dass das, was ich getan habe, korrekt ist?
sudo update-alternatives --config javac
So installiere ich jdk
#!/bin/bash cd /opt/ sudo mkdir java sudo tar -zxvf ~/Downloads/jdk-8u192-linux-x64.tar.gz sudo ln -s jdk1.8.0_192 current for file in /opt/java/current/bin/* do if [ -x $file ] then filename=`basename $file` sudo update-alternatives --install /usr/bin/$filename $filename $file 20000 sudo update-alternatives --set $filename $file #echo $file $filename fi done
quelle
Es gibt viele andere Binärdateien, die verknüpft werden müssen. Ich denke, es ist viel besser, so etwas auszuprobieren
sudo update-alternatives --all
und die richtigen Alternativen für alles andere außerjava
und auszuwählenjavac
.quelle
Ich benutze Ubuntu 18.04 LTS. Wenn ich meine
java
Version ändere , möchte ich meistens auch dieselbejavac
Version verwenden.Ich benutze
update-alternatives
diesen Weg und benutzejava_home
stattdessen eine Alternative:Installation
Installieren Sie alle Java - Version in
/opt/java/<version>
, zum Beispiel~$ ll /opt/java/ total 24 drwxr-xr-x 6 root root 4096 jan. 22 21:14 ./ drwxr-xr-x 9 root root 4096 feb. 7 13:40 ../ drwxr-xr-x 8 stephanecodes stephanecodes 4096 jan. 8 2019 jdk-11.0.2/ drwxr-xr-x 7 stephanecodes stephanecodes 4096 dec. 15 2018 jdk1.8.0_201/
Alternativen konfigurieren
~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk-11.0.2/ 100 ~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk1.8.0_201 200
Deklarieren
JAVA_HOME
(In diesem Fall verwende ich dafür ein globales Initialisierungsskript)~$ sudo sh -c 'echo export JAVA_HOME=\"/opt/java/current\" >> environment.sh'
Melden Sie sich ab oder starten Sie Ubuntu neu (dies wird neu geladen
/etc/profile.d/environment.sh
)Verwendung
Java-Version ändern
Wählen Sie die Version, die Sie verwenden möchten
~$ sudo update-alternatives --config java_home There are 2 choices for the alternative java_home (providing /opt/java/current). Selection Path Priority Status ------------------------------------------------------------ 0 /opt/java/jdk-11.0.2 200 auto mode 1 /opt/java/jdk-11.0.2 200 manual mode * 2 /opt/java/jdk1.8.0_201 100 manual mode Press <enter> to keep the current choice[*], or type selection number:
Version prüfen
~$ java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) ~$ javac -version javac 11.0.2
Trinkgeld
Fügen Sie der
~/.bash_aliases
Datei die folgende Zeile hinzu :alias change-java-version="sudo update-alternatives --config java_home && java -version && javac -version"
Verwenden Sie nun den
change-java-version
Befehl, um die Java-Version zu ändernquelle
Schauen Sie sich https://wiki.debian.org/JavaPackage an. Am Ende dieser Seite wird eine andere Methode mit einem Befehl aus dem Java-Common-Paket beschrieben
quelle
Wenn Sie das jdk regelmäßig wechseln möchten (oder nach seiner Veröffentlichung auf ein neues aktualisieren möchten), ist es sehr praktisch, sdkman zu verwenden .
Sie können auch zusätzliche Tools wie maven mit sdkman verwenden.
quelle