Установленная Java 7 в Mac OS X, но Terminal по-прежнему использует версию 6

Я установил JDK 7u7, загруженный с веб-сайта oracle. Но после установки терминал по-прежнему показывает версию java версии 6

$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

любая идея, почему java 7 не отображается?

Ans: Хорошо, проблема решена. Вот ответ: Я обнаружил, что у моего терминала есть .bash_profile, а для переменной java home установлено значение 1.6

export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

Итак, это строка, вызывающая проблему каждый раз, когда я открываю новое окно терминала. Просто удалите эту строку, решив проблему. Вам все равно нужно следить за тем, что сказал @aleroot, но если это не сработает для вас, проверьте файл настроек .bash_profile (или .bashrc), чтобы узнать, была ли вы ранее экспортирована любая версия java.

Ответ 1

Поскольку вам нужно войти в панель настроек Java и пометить только JVM 7 следующим образом:

Java Preferences

Чтобы легко и быстро открыть панель Java Preferences в Mac OS X, вы можете просто вызвать прожектор с + SPACE и ввести Системные настройки, которые он покажет в последней строке окна.

Ответ 2

Oracle installer помещает java внутри /Library/Internet Plug-Ins/JavaAppletPlugin.plugin. И он не перезаписывает /usr/bin/java. Итак, если вы выдаете

whereis java

в терминале, он вернет /usr/bin/java. (который, в свою очередь, указывает на /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java, что является версией Apple 1.6).

Итак, если вы хотите использовать новую версию java, замените символическую ссылку /usr/bin/java так, чтобы она указывала на /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java:

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin

Ответ 3

Установите JDK 7, и эта проблема решит сам.

Обязательно запустите Java Development Kit (JDK), который включает компиляторы и т.д., а не только среду Java Runtime Environment (JRE).

Ответ 4

vi ~/.bash_profile

добавить

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

Это указывает вашей целевой ссылке /usr/bin/java использовать последний пакет Java 7, установленный в

/Library/Java/JavaVirtualMachines/

Итак, для JDK 1.7.0_17 JAVA_HOME будет:

/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

Примечание. Недавно в этой области произошли большие изменения, чтобы переместить Mac OS X из собственных системных пакетов Java Appels на пакеты Java на базе Java. Вышеупомянутое решение отлично работает с Mac OS X 10.8.2

Ответ 5

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

Загрузка из Oracle: http://java.com/en/download/mac_download.jsp?locale=en

  • Убедитесь, что он установлен правильно, посмотрев в System Prefs:

    • Command-Space, чтобы открыть Spotlight, введите "Системные настройки", нажмите enter.
    • Нажмите значок Java в нижней строке. После того, как откроется панель управления Java, перейдите на вкладку "Java", "Просмотреть..." и убедитесь, что ваша установка работала. Вы также можете увидеть "Путь", который вы можете добавить в приведенные ниже команды, если они отличаются от моих.
  • Убедитесь, что версия такая, как вы ожидаете (sub в вашем пути по мере необходимости):

    /Library/Интернет\Плагины/JavaAppletPlugin.plugin/Содержание/Главная/bin/java -version

  • Создайте ссылку на /usr/bin/java для новой установки

    sudo ln -fs/Library/Интернет\Плагины/JavaAppletPlugin.plugin/Содержание/Главная/bin/java/usr/bin/java

  • Проверка соответствия вашей версии:

    java -version

Ответ 6

У меня возникла аналогичная проблема с терминалом, не обновляющим версию java, чтобы соответствовать версии, установленной на Mac.

Не было проблем с установленной переменной среды JAVA_HOME

Я придумал временное и несколько болезненное, но работающее решение.

В вас .bash_profile добавьте строку:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"

(Это путь на моей машине, но может отличаться от вашего, убедитесь, что вы получили его. Пути должны соответствовать /Library/Java/JavaVirtualMachines/ )

пробег source ~/.bash_profile

Как я уже говорил, это временное решение для групповой поддержки, потому что исходный путь java жестко закодирован. На самом деле нет способа установить путь для получения последней информации, так как Apple якобы делает для терминала уже, и проблема в том, что переменная среды Java java_home не обновляется.

Ответ 7

С El Capitan трудно удалить символическую ссылку /usr/bin/java из-за введения новой политики "без корней".

Поэтому я просто добавил путь к последней версии java (в моем случае это /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin) в PATH в моем .bashrc файле:

# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH

Чтобы перезагрузить файл .bashrc для текущего сеанса, запустите source ~/.bashrc в оболочке. Вам нужно сделать это только для сеансов, которые были запущены до изменения файла .bashrc.

Теперь используется последняя версия, когда вы используете java в оболочке.

Ответ 8

Для меня самый простой и самый простой способ - установить Java с использованием homebrew, как описано здесь:

fooobar.com/questions/19187/...

brew update
brew cask install java

Ответ 9

Основная проблема: /usr/bin/java указывает на тот, который предоставляется самим OSX (/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java) Мы должны указать это на тот, который был загружен установщиком JDK. Ниже приведены шаги для OSX 10.10.4 Yosemite.

  • Открыть Системные настройки → выберите Java. Откроется окно Java.
  • Перейдите на вкладку Java вверху. Нажмите кнопку "Просмотр".
  • Вкладка "Параметры среды выполнения Java" открывается, как показано ниже: вкладка настроек JRE
  • Дважды щелкните элемент Path и скопируйте путь (cmd + c). Это последняя версия, установленная установщиком/установщиком JDK. В моем случае путь был /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
  • Открыть терминал. На этом шаге мы будем указывать (символическая ссылка, ln -s команда) на двоичный код системы java до последнего, который мы обнаружили на предыдущем шаге. Выполните следующую команду:

sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

Вот оно. Чтобы проверить, вы можете просто запустить java -version на терминале. Он должен выводить последнюю версию, которую вы установили/обновили.

Ответ 10

Вы можете выполнить следующую команду в своем терминале:

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

И это заменяет старый java новым.

Ответ 11

Я сделал

export JAVA_HOME=`/usr/libexec/java_home`

и это исправило мою проблему с Java 8.

перед:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

после

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

Ответ 12

http://www.java.com/en/download/faq/java_mac.xml - это прекрасное место для понимания, в то время как Apple прекращает поддержку Java, почему настройки Java больше не существуют и полагаются на System_Preferences = > Java = > Java, если установлена ​​Java 7 из Oracle.

Ответ 13

Могу ли я предложить вам взглянуть на инструмент Jenv

Это позволит вам переключаться в любое время между установленными JVM.

Просто как:

jenv global oracle-1.7

а затем для целей тестирования:

jenv global oracle-1.6

И у вас есть гораздо больше доступных команд.

Ответ 14

Жесткое кодирование пути JAVA_HOME может быть не лучшей идеей. Утилита /usr/libexec/java_home для меня работает на Mac OSX Lion 10.7.5 и JDK 1.7.0_13. Согласно его странице руководства, он предназначен для использования с старой панелью настроек Java Apple, но, похоже, работает с заменой, предоставляемой Oracle (панель управления Java). Например, запуск /usr/libexec/java_home -V перечисляет все установленные JDK (и 1.6. * И 1.7. *) На моей машине.

Итак, как обсуждалось в других потоках (например, Что мне нужно установить JAVA_HOME на OSX), я бы порекомендовал добавить следующую строку в ваш .bash_profile:

export JAVA_HOME=$(/usr/libexec/java_home)

Ответ 15

Это орехи! Как Oracle предоставляет установщик, который ничего не устанавливает!?

В любом случае для меня это было:

sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java

где 1.8.0_31 - это ваша установленная версия java...

Ответ 16

Простое решение

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

Ответ 17

В случае, если у вас есть несколько версий Java на вашем компьютере, и вы хотите выбрать его динамически во время выполнения, то есть в моем случае у меня есть две версии:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

Вы можете изменить их, изменив содержимое /etc/profile. Просто добавьте (или измените) следующие две строки в конце файла:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

В моем случае это должно быть похоже на следующее, если я хочу использовать:

Java 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Java 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

После сохранения файла запустите source /etc/profile, и он должен работать. Вот результаты, когда я использую первый и второй вариант соответственно:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

Процесс аналогичен, если ваша папка Java находится в разных местах.

Ответ 18

Я думаю, вы можете попробовать установить jdk not jre. Установив jdk, java в /usr/bin/java будет заменен, и вся библиотека будет работать нормально.

Ответ 19

Это происходит потому, что ваш .bash_profile не отражает изменения. Чтобы отразить это, просто используйте следующую команду

$ source .bash_profile

Ответ 20

Вы можете запустить эту команду, чтобы найти версию Java, которая находится под /Library/Internet Plugins/:

defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion

Ответ 21

Если у вас установлен Homebrew, вы можете установить java-switcher, чтобы быстрее изменить версию Java по умолчанию

brew tap andycillin/tap
brew install java-switcher

Затем вы можете использовать только одну команду для переключения версии Java по умолчанию.

java-switcher 1.7

или

java-switcher 10

Ответ 22

Так как я не сталкивался с этой проблемой, я принимаю догадки -

Можете ли вы попробовать следующее:

Где софт-ссылка "java_home" указывает на:

ls -lrt /usr/libexec/java_home

Выход: (Замедленный)   lrwxr-xr-x java_home → /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home

** ls -lrt/System/Library/Frameworks/JavaVM.framework/Versions   Мой MAC Выдает следующее:

 lrwxr-xr-x CurrentJDK ->
 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**

 lrwxr-xr-x   Current -> A
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4.2 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4 -> CurrentJDK

Исходя из этого, мы можем получить намек на продолжение?

Ответ 23

Я разрешил эту проблему, установив Yosemite, а затем перекрестно проверил java-версию на терминале (java -version) и (javac -version). Он отлично работает сейчас. Он не меняется на java 7, поскольку версия 6 все еще присутствует ( command + n) libray > java > javavirtualmachine > ваша текущая версия javac. Вам нужно обратиться в java home.

Ответ 24

Я решил эту проблему с sudo rm /usr/bin/java

И я загрузил и установил последнюю среду выполнения Java SE: http://www.oracle.com/technetwork/java/javase/downloads/index.html

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java не работал у меня, потому что я получил Operation not permitted. El Capitan теперь защищает определенные системные каталоги в режиме "без корней" (защита целостности системы a.k.a.). Он применим к macOS Sierra и, возможно, новым версиям macOS в обозримом будущем.

Ответ 25

Установка через распределенную JDK DMG с сайта Oracle автоматически обновляет все для меня. Я видел (в El Capitan), что обновление через System Preferences > Java выполняет обновления, но это не отражается на командной строке. Установка через DMG делает свою работу.

Ответ 26

Проверьте установленные версии JDK:

$ ls  /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk  jdk1.8.0_91.jdk

Теперь в вашем ~/.bashrc экспорте JAVA_HOME указывается версия:

if [ -e /usr/libexec/java_home ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v 11)
fi

Исходный файл bashrc и версия Java будут обновлены:

$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

Ответ 27

Последний 100% эффективный метод:


в баш:

vim ~/.bash_profile

добавить

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
  • :wq чтобы сохранить
  • cmd + q принудительно выйти из bash
  • снова откройте bash и введите java -version

Но на самом деле этот путь указывает на JRE не JDK.

Если вы хотите указать путь к JDK, вам нужно

  1. Убедитесь, что вы установили JDK, а не одну среду выполнения JRE
  2. заменив предыдущий путь к PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk", вы можете перейти к /Library/Java/JavaVirtualMachines, чтобы убедиться, что вы установили ту версию JDK, которую вы ожидали.