В процессе установки 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 все еще хорошо работает.
Для фиксации его просто выполняет следующие команды
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
. Вторая команда дает Вам возможность выбрать версию по умолчанию, которую Вы хотите.