Мне установили Java 8 и Java 11 параллельно на моей машине Ubuntu 16.04:
$ update-java-alternatives --list
java-1.11.0-openjdk-amd64 1111 /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 11 ранее, я теперь хотел переключиться на Java 8 с помощью команды
$ sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
Все же, только символьная ссылка /usr/bin/java
, но нет /usr/bin/javac
обновляется:
$ javac -version
javac 11.0.5
$ java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
Почему это и как это может быть зафиксировано?
Альтернативы Java настроены в .jinfo файлах, например, альтернативах в /usr/lib/jvm/.java-1.8.0-openjdk-amd64.jinfo
и /usr/lib/jvm/.java-1.11.0-openjdk-amd64.jinfo
в Вашем случае. При рассмотрении файла Java 8 Вы будете видеть следующую строку, которая настраивает путь для javac
, среди других для всех других двоичных файлов Java:
jdkhl javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
К сожалению, это походит update-java-alternatives
сценарий устарел в Вашей системе, ведя к строкам, снабженным префиксом jdkhl
(короткий для Бездисплейного JDK) быть проигнорированным. Это было также обсуждено в ошибке Debian #825987
.
Для фиксации его просто отредактируйте /usr/sbin/update-java-alternatives
согласно этому различному