Установил 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" в 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_17
JAVA_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
Убедитесь, что он установлен правильно, просмотрев Системные настройки:
- Command-Space, чтобы открыть Spotlight, введите "Системные настройки", нажмите Enter.
- Нажмите значок Java в нижнем ряду. После того, как откроется панель управления Java, перейдите на вкладку "Java", "View..." и убедитесь, что установка прошла успешно. Там вы также можете увидеть "Путь", который вы можете использовать в следующих командах, если они отличаются от моих.
Убедитесь, что версия соответствует ожидаемой (в вашем пути указывается подпрограмма):
/ Библиотека / Интернет \ Плагины /JavaAppletPlugin.plugin/ Содержание / Главная /bin/java -version
Создайте ссылку из /usr/bin/java для вашей новой установки
sudo ln -fs / Библиотека / Интернет \ Подключаемые модули /JavaAppletPlugin.plugin/ Содержание / Главная / bin / java /usr/bin/java
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, вам нужно
- Убедитесь, что вы установили JDK, а не одну среду выполнения JRE
- заменить предыдущий путь на
PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk"
, ты можешь пойти в/Library/Java/JavaVirtualMachines
чтобы убедиться, что вы установили ожидаемую версию JDK.