Подтвердить что ты не робот

JAVA_HOME и PATH установлены, но java -version все еще показывает старый

Я использую 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 по умолчанию с тем, который я загрузил?

UPDATE:

which java говорит /usr/bin/java

$JAVA_HOME/bin/java -version говорит, что "Permission Denied"

sudo $JAVA_HOME/bin/java -version (запрашивает пароль, затем) говорит, что команда не найдена

но cd $JAVA_HOME/bin, а ls показывает, что это правильный каталог.

4b9b3361

Ответ 1

Несмотря на то, что настройки выглядят правильно, необходимо проверить несколько вещей:

  1. Вывод env - конкретно PATH.
  2. command -v java говорит вам, что?
  3. Есть ли исполняемый файл java в $JAVA_HOME\bin и установлен ли для него бит выполнения? Если не chmod a+x java это.

Надеюсь, у вас есть source .profile после добавления/изменения JAVA_HOME и PATH?

Кроме того, вы можете помочь себе в дальнейшем обслуживании вашей установки JDK, написав вместо этого:

export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=$JAVA_HOME/bin:$PATH

Тогда вам нужно всего лишь обновить одну переменную env при настройке установки JDK.

Наконец, вам может потребоваться запустить hash -r чтобы очистить кэш программы Bash. Другие оболочки могут нуждаться в аналогичной команде.

Ура,

Ответ 2

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 и т.д.

Мне еще предстоит увидеть эффект JAVA_HOME на JDK. До сих пор я видел, как он использовался в сторонних инструментах, например, Maven.

Ответ 3

$JAVA_HOME/bin/java -version говорит "Разрешить отказ"

Если вы не можете получить доступ или запустить код, это будет игнорироваться при добавлении к вашему пути. Вы должны сделать его доступным и выполнимым или получить собственную копию.

Сделайте

ls -ld $JAVA_HOME $JAVA_HOME/bin $JAVA_HOME/bin/java

чтобы узнать, почему вы не можете получить доступ или запустить эту программу,

Ответ 4

Когда он ищет java, он смотрит слева направо в записи пути, которые разделены: поэтому вам нужно добавить путь к последней директории jdk/bin до /usr/bin, поэтому при ее поиске она найдет последний и продолжить поиск дальше.

то есть. PATH =/usr/java/jdk_1.8/bin:/usr/bin:..... и т.д.

затем инициализируйте профиль пользователя с помощью команды: source ~/.bash_profile

и проверьте с помощью: [which java]

вы получите правильный вариант.

Ответ 5

Если вы хотите использовать JDK, загруженные с сайта Oracle, то, что сработало для меня (используя Mint), использует альтернативные варианты обновлений:

  1. Я загрузил JDK и извлек его в любом месте, например, в /home/aqeel/development/jdk/jdk1.6.0_35
  2. Я побежал:

    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.

  3. Это не устанавливает переменную JAVA_HOME, которую я хотел настроить, поэтому я просто добавил ее в свой файл ~/.bashrc, включая export JAVA_HOME="/home/aqeel/development/jdk/jdk1.6.0_35"

Теперь у меня было загружено два JDK (скажем, второй был извлечен в /home/aqeel/development/jdk/jdk-10.0.1).

Как мы можем динамически изменять JAVA_HOME на основе текущей используемой java?

Мое решение не очень элегантное, я уверен, что там есть лучшие варианты, но в любом случае:

  1. Чтобы динамически изменять JAVA_HOME на основе выбранной альтернативы java, я добавил этот фрагмент к ~/.bashrc:

    export JAVA_HOME=$(update-alternatives --query java | grep Value: | awk -F'Value: ' '{print $2}' | awk -F'/bin/java' '{print $1}')
    

Наконец (это выходит за рамки), если вам нужно постоянно менять версию java, вы можете подумать:

  1. Добавление псевдонима к вашим ~./Bash_aliases:

    alias change-java="sudo update-alternatives --config java"
    

(Возможно, вам придется создать файл и, возможно, раскомментировать раздел, связанный с этим в ~/.bashrc)

Ответ 6

Существует простой способ, просто удалите символическую ссылку из "/usr/bin". Он будет работать.

Ответ 7

Обновление ~/.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

Ответ 8

В Linux Mint 18 Cinnamon обязательно проверьте /etc/profile.d/jdk_home.sh. Я переименовал этот файл в jdk_home.sh.old, и теперь мой путь не перестает меняться, и я может вызывать java -version и видеть Java 9 как ожидалось. Несмотря на то, что я правильно выбрал Java 9 в update-aternatives --config java, этот файл jdk_home.sh сохранял переопределение $PATH при загрузке.

Ответ 9

проверьте доступные версии Java в вашей системе Linux с помощью команды update-alternatives:

 $ sudo update-alternatives --display java

Теперь, когда есть подходящие кандидаты на изменение, вы можете переключить версию Java по умолчанию среди доступных JRE Java, выполнив следующую команду:

 $ sudo update-alternatives --config java

При появлении запроса выберите версию Java, которую вы хотите использовать. 1, 2, 3 или т.д.

Теперь вы можете проверить, что версия Java по умолчанию изменилась следующим образом.

 $ java -version

Ответ 10

Попробуй это:

  • экспортировать JAVA_HOME = put_here_your_java_home_path
  • тип экспорта PATH = $ JAVA_HOME/bin: $ PATH (убедитесь, что $ JAVA_HOME является первым элементом в PATH)
  • попробуй java -version

Причина: могут быть другие элементы PATH, указывающие на альтернативный дом Java. Если вы поместите сначала предпочитаемый JAVA_HOME, система будет использовать этот.

Ответ 11

Проще всего было бы либо удалить ссылку, либо отредактировать /usr/bin/java. это вызов для выполнения java по указанному пути.