JAVA HOME и PATH установлены, но java-версия по-прежнему показывает старый
Я использую Linux Mint Cinnamon 14. Я установил $JAVA_HOME
и $PATH
переменные среды в ~/.profile
следующим образом:
export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=/home/aqeel/development/jdk/jdk1.6.0_35/bin:$PATH
Я тогда сделал source ~/.profile
внести соответствующие изменения.
когда я выполнить java -version
команда для проверки активной версии java показывает версию java по умолчанию (уже установленную open-jdk). Как я могу переопределить open-jdk по умолчанию с тем, который я загрузил?
обновление:
which java
говорит / usr/bin / java
$JAVA_HOME/bin/java -version
пишет 'отказано в доступе'
sudo $JAVA_HOME/bin/java -version
(запрашивает пароль, затем) говорит, что команда не найдена
но cd $JAVA_HOME/bin
и ls
показывает, что это правильный каталог.
9 ответов
хотя похоже, что ваша настройка Верна, есть несколько вещей, чтобы проверить:
- выход
env
в частностиPATH
. -
which java
говорит вам, что? - есть
java
исполняемый в$JAVA_HOME\bin
и имеет ли он набор битов execute? Если нетchmod a+x java
его.
Я верю, что у вас есть source
' d ваш .profile
после добавления/изменения JAVA_HOME
и PATH
?
кроме того, вы можете помочь себе в будущее обслуживание вашей установки JDK, пишет
export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=$JAVA_HOME/bin:$PATH
. Затем вам нужно обновить только одну переменную env при настройке установки JDK.
спасибо,
update-java-alternatives
на java
исполняемый файл не найден с JAVA_HOME
, это зависит только от вашего PATH
.
update-java-alternatives
- это хороший способ управлять им для всей системы через:
update-java-alternatives -l
пример вывода:
java-7-oracle 1 /usr/lib/jvm/java-7-oracle
java-8-oracle 2 /usr/lib/jvm/java-8-oracle
Выберите один из вариантов:
sudo update-java-alternatives -s java-7-oracle
как update-alternatives
, он работает через Управление симлинк. Преимущество заключается в том, что управляет символическими ссылками на все утилиты Java на после: javac
, java
, javap
, etc.
Я еще не видел JAVA_HOME
влияние на JDK. До сих пор я видел его только в сторонних инструментах,например Maven.
$JAVA_HOME/bin / java-версия говорит "отказано в разрешении"
Если вы не можете получить доступ или запустить код, он будет проигнорирован при добавлении к вашему пути. Вам нужно сделать его доступным и доступным для запуска или получить собственную копию.
сделать
ls -ld $JAVA_HOME $JAVA_HOME/bin $JAVA_HOME/bin/java
чтобы понять, почему вы не можете открыть или запустить программу,.
когда он ищет java, он смотрит слева направо в записях пути, которые разделены: поэтому вам нужно добавить путь к последнему каталогу jdk/bin до /usr/bin, поэтому, когда он ищет, он найдет последний и прекратит поиск дальше.
т. е. путь= / usr / java / jdk_1.8 / bin: / usr / bin:..... и так далее.
затем инициализируйте Профиль пользователя с помощью команды: source ~/.файл
и проверьте с помощью: [какая java]
вы получите право один.
обновление ~/.profile
или ~/.bash_profile
не работает иногда. Я просто удалил JDK 6 и source
d .bash_profile
.
попробуй:
sudo rm -rd jdk1.6.0_* #it may not let you delete without sudo
затем измените / добавьте переменные JAVA_HOME и PATH.
source ~/.bash_profile #assuming you've updated $JAVA_HOME and $PATH
в Linux Mint 18 Cinnamon обязательно проверьте /etc/profile.d/jdk_home.sh я переименовал этот файл в jdk_home.Ш. старый и теперь мой путь не переопределяется, и я могу вызвать java-версию и увидеть Java 9, как ожидалось. Хотя я правильно выбрал Java 9 в update-aternatives --config java
Это jdk_home.sh файл продолжал переопределять $PATH при загрузке.
если вы хотите используйте JDKs, загруженные с сайта Oracle, то, что сработало для меня (с помощью Mint), использует обновление-альтернатив:
- я загрузил JDK и извлек его в любом месте, например в / home / aqeel / development/jdk / jdk1.6.0_35
-
я побежал:
sudo update-alternatives --install /usr/bin/java java /home/aqeel/development/jdk/jdk1.6.0_35/bin/java 1`
теперь вы можете выполнить
sudo update-alternatives --config java
и выберите java версия. - это не то!--6-->переменная JAVA_HOME, который я хотел настроить, поэтому я просто добавил его в свой~/.bashrc и, в том числе
export JAVA_HOME="/home/aqeel/development/jdk/jdk1.6.0_35"
сообщении
Я два jdks скачали (предположим, что второй был извлечен в / home/aqeel/разработка/jdk / jdk-10.0.1).
как мы можем динамически изменять JAVA_HOME на основе текущей используемой java?
мой решение не очень элегантное, я уверен, что есть лучшие варианты, но в любом случае:
-
для динамического изменения JAVA_HOME на основе выбранной альтернативы java, я добавил этот фрагмент в ~/.bashrc следующее:
export JAVA_HOME=$(update-alternatives --query java | grep Value: | awk -F'Value: ' '{print }' | awk -F'/bin/java' '{print }')
наконец (это выходит за рамки)если вам нужно постоянно менять версию java, вы можете рассмотреть:
-
добавить псевдоним на ~./bash_aliases:
alias change-java="sudo update-alternatives --config java"
(возможно, вам придется создать файл и, возможно, раскомментировать раздел, связанный с этим в ~/.bashrc и)
проще всего было бы либо удалить ссылку, либо отредактировать /usr/bin/java. это имеет вызов для выполнения java по указанному пути.