как фиксируют ошибку, сделанную с альтернативами обновления?

В процессе установки OpenJDK 11 (через загрузку), и попытка установить переменную среды и значения по умолчанию для вызова этой версии вместо ранее установленного Java 10 я испортил способность Ubuntu найти Java. Текущее сообщение об ошибке следует:

phil@UBI-VirtualBox: ~/JavaApps$ Java - удар версии:/usr/bin/java: Никакой такой файл или каталог

Следующее является хронологией действий, которые привели к этой проблеме.

Я установил OpenJDK 11 в/usr/lib/jvm/jdk-11.0.1 папке./usr/lib/jvm папка также имеет другие версии Java (например,/java-ll-openjdk-amd64, который на самом деле выполняет java 10).

Я затем создал переменную JAVA_HOME и установил ее с предпочтительной версией Java. Переменная среды теперь перечислена в обоих/etc/environment

JAVA_HOME="/usr/lib/jvm/jdk-11.0.1"

и как последняя строка в ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.1

В той точке при попытке проверить через "Java - версия" я нашел, что JAVA_HOME хорошо работает, но что мое значение по умолчанию все еще указало на ранее установленный Java 10.

phil@UBI-VirtualBox:~$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)
phil@UBI-VirtualBox:~$ $JAVA_HOME/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

Это было в этой точке, я выяснил, что альтернативы обновления играли роль.

К сожалению, я, кажется, завинтил вещи путем включения ошибочной команды:

phil@UBI-VirtualBox:~$ sudo update-alternatives --install /usr/lib/jvm java /usr/lib/jvm/jdk-11.0.1/bin/java 3
update-alternatives: renaming java link from /usr/bin/java to /usr/lib/jvm
update-alternatives: warning: forcing reinstallation of alternative /usr/lib/jvm/java-11-openjdk-amd64/bin/java because link group java is broken
update-alternatives: warning: not replacing /usr/lib/jvm with a link
phil@UBI-VirtualBox:~$ sudo update-alternatives --install /usr/lib/java java /usr/lib/jvm/jdk-11.0.1/bin/java 3
update-alternatives: warning: forcing reinstallation of alternative /usr/lib/jvm/java-11-openjdk-amd64/bin/java because link group java is broken
phil@UBI-VirtualBox:~$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/lib/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  3            /usr/lib/jvm/jdk-11.0.1/bin/java                 3         manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/lib/jvm/jdk-11.0.1/bin/java to provide /usr/lib/java (java) in manual mode 

Теперь, когда рабочий "Java - версия" я получаю следующее сообщение об ошибке:

phil@UBI-VirtualBox:~/JavaApps$ java -version
bash: /usr/bin/java: No such file or directory

Осматривая/usr/bin для файла "Java", я нахожу, что ни один не существует. Существует ссылка "javac", которая указывает на/ext/alternatives папку (а также другие ссылки, такие как "банка").

/ext/alternatives папка имеет и ссылки "javac" и "Java" в ней. И "javac" и "Java" указывают на желаемую версию Java. (Я также добавил альтернативы javac.)

Кроме того, папка, которая содержит jvms (/usr/lib/jvm) также, содержит еще один файл связей "Java". Эти точки к "/etc/alternatives/java". И существует ссылка папки "Java по умолчанию", которая указывает на нежелательную версию Java.

Я пытался копировать ссылку на "/etc/alternatives/java" от/usr/lib/jvm до/usr/bin, но получающийся значок не имел стрелки и не работал, таким образом, я удалил его. Команда раньше копировала:

sudo cp /usr/lib/jvm/java /usr/bin/java 

Я думал, что лучше прекращаю метаться прежде, чем сделать вещи еще хуже и спрашиваю, как зафиксировать это.

BTW, JAVA_HOME все еще хорошо работает.

0
задан 3 January 2019 в 15:10

1 ответ

Для фиксации его просто выполняет следующие команды

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11.0.1/bin/java 3
sudo update-alternatives --config java

Первое корректное ошибки, которые Вы совершили, где Вы имели /usr/lib/jvm это должно было быть /usr/bin/java. Вторая команда дает Вам возможность выбрать версию по умолчанию, которую Вы хотите.

1
ответ дан 26 October 2019 в 15:56

Другие вопросы по тегам:

Похожие вопросы: