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

Я установил JDK 7u7, скачанный с сайта оракула. Но после установки терминал все еще показывает версию 6 Java

$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 не появляется?

Ответ: ОК, проблема была решена. Вот ответ: я обнаружил, что мой Терминал имеет.bash_profile, а переменная java home установлена ​​в 1.6

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

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

24 ответа

Решение

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

Настройки Java

Чтобы легко и быстро открыть панель " Настройки Java" в Mac OS X, вы можете просто вызвать spotlight с помощью SP+SPACE и ввести " Системные настройки", которые будут отображаться в последнем ряду окна.

Установщик Oracle помещает 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

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

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

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_17JAVA_HOME было бы:

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

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

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

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

  1. Убедитесь, что он установлен правильно, просмотрев Системные настройки:

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

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

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

    sudo ln -fs / Библиотека / Интернет \ Подключаемые модули /JavaAppletPlugin.plugin/ Содержание / Главная / bin / java /usr/bin/java

  4. Sanity проверить вашу версию:

    Java-версия

Я столкнулся с подобной проблемой с терминалом, не обновляющим версию 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 якобы уже делает для терминала, и проблема в том, что переменная среды Apple java_home не обновляется.

Начиная с Эль-Капитана, трудно удалить /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 в оболочке.

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

/questions/13000415/kak-ustanovit-java-8-na-mac/13000444#13000444

brew update
brew cask install java

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

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

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

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

  • Откройте Системные настройки -> выберите Java. Откроется окно Java.
  • Нажмите на вкладку Java в верхней части. Нажмите на кнопку "Просмотр".
  • Откроется вкладка "Параметры среды выполнения Java", как показано ниже: Вкладка
  • Дважды щелкните на 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на терминале. Должна появиться последняя версия, которую вы установили / обновили.

Я сделал

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)

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

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

Просто как:

jenv global oracle-1.7

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

jenv global oracle-1.6

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

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

Это чокнутый! Как 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...

Жесткое кодирование пути JAVA_HOME может быть не самой лучшей идеей. /usr/libexec/java_home У меня работает утилита на Mac OSX Lion 10.7.5 и JDK 1.7.0_13. Согласно справочной странице, она предназначена для использования со старой панелью Java Preferences от 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)

В случае, если у вас есть несколько версий 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 находится в разных местах.

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

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

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

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

brew tap andycillin/tap
brew install java-switcher

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

java-switcher 1.7

или же

java-switcher 10

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

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

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

$ source .bash_profile

Проверьте установленные версии 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)

Я решил эту проблему с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 теперь защищает определенные системные каталоги в режиме "без рута" (он же System Integrity Protection). Это применимо к macOS Sierra и, возможно, к новым версиям macOS в обозримом будущем.

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

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

Можете ли вы попробовать это:

Где мягкая ссылка "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 My 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

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

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

Новейший 100% эффективный метод:


в bash:

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.
Другие вопросы по тегам