Я изо всех сил пытаюсь заставить свою Ubuntu 20.04 распознавать правильную версию Java. Я установил правильную переменную среды внутри сценария оболочки в /etc/profile.d/
Мой $JAVA_HOME
вывод:
root@Ubuntu-2004-focal-64-minimal /etc/profile.d # echo $JAVA_HOME
/дом/мив/java/jdk-15.0.2
.. это указывает на правильную версию Java, которую я хочу использовать! (15.0.2)
Кроме того, я добавил этот домашний каталог в свой $ПУТЬ
переменная:
root@Ubuntu-2004-focal-64-minimal /etc/profile.d # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ мив/java/jdk-15.0.2
Мой Maven правильно распознает версию, так как использует переменную $JAVA_HOME для определения версии.
root@Ubuntu-2004-focal-64-minimal / # mvn -версия
Апач Мавен 3.6.3
Главная страница Maven: /usr/share/maven
Версия Java: 15.0.2, поставщик: Oracle Corporation, среда выполнения: /home/miw/java/jdk-15.0.2
В настоящее время:
Мой вопрос в том, где внутри процесса запуска или вообще в каком файле по умолчанию Ява
директория команд определена. я НЕ ХОТЕТЬ просто решение моей проблемы. (например, некоторые автоматизированные программы, где я могу переключаться между альтернативами и т. д.)
Система каким-то образом все же распознает предустановленную версию java, расположенную внутри /usr/lib/jvm/java-11-openjdk-amd64/bin
по умолчанию... и действительно, если я загляну внутрь /USR/бен
каталоге есть символическая ссылка с именем Ява
что указывает на /etc/альтернативы/java
символическая ссылка, указывающая на /usr/lib/jvm/java-11-openjdk-amd64/bin
.
Следующим моим предположением было то, что это связано с $ПУТЬ
иерархия с /USR/бен
определяется ДО моего пользовательского $JAVA_HOME
.
Хорошо..я попытался удалить эти символические ссылки, надеясь, что система, наконец, достигнет моего пользовательского $JAVA_HOME
каталог в поисках Ява
исполняемый файл.... что происходит сейчас, так это то, что когда я пытаюсь показать версию Java, возникает ошибка:
root@Ubuntu-2004-focal-64-minimal /etc/alternatives # версия java
-bash: /usr/bin/java: нет такого файла или каталога
Ну, конечно, его больше нет, потому что я его удалил...
Почему система берет /USR/бен/Ява
все равно как должное? Где это точный путь для Ява
определена команда?
Я проверил это, создав собственную символическую ссылку внутри /USR/бен
это указывает на мой пользовательский каталог.. и тада..
root@Ubuntu-2004-focal-64-minimal /etc/alternatives # ln -s /home/miw/java/jdk-15.0.2/bin/java /usr/bin/java
root@Ubuntu-2004-focal-64-minimal /etc/alternatives # версия java
openjdk версия "15.0.2" 2021-01-19
Среда выполнения OpenJDK (сборка 15.0.2+7-27)
64-разрядная виртуальная машина сервера OpenJDK (сборка 15.0.2+7-27, смешанный режим, совместное использование)
Так может ли кто-нибудь объяснить мне, что на самом деле здесь произошло? Почему система считает, что /USR/бен/Ява
ДОЛЖЕН быть там, где находится команда java? Это как-то разрушает цель $ПУТЬ
переменная в первую очередь! Что я не получаю здесь?