Установленная 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 не появляется?
Ответ: Хорошо, проблема решена. Вот ответ: я обнаружил, что у моего терминала есть .bash_profile, а для переменной java home установлено значение 1.6
- Как я могу переназначить Control + e на Escape + Control + e в iTerm2?
- Требуется ли учетная запись администратора для использования оболочек, таких как zsh и fish?
- Как сопоставить <cmd> - <shift> -f, чтобы запустить плагин Ack в Vim?
- Как разрезать на точные кадры с помощью ffmpeg?
- OSX: Обнаруживать общесистемные события KeyDown?
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
Так что это строка, вызывающая проблему каждый раз, когда я открываю новое окно терминала. Просто удалите эту строку, решив проблему. Вам все равно нужно следить за тем, что сказал @aleroot, но если это не сработает для вас, проверьте файл настроек .bash_profile (или .bashrc), чтобы убедиться, что вы ранее экспортировали любую версию java.
- Почему физический размер файла .dylib меньше, чем его логический размер?
- Завершение вкладок, нечувствительных к регистру, в Bash
- Как маршрутизировать трафик через определенный прокси-сервер SOCKS для каждого приложения?
- Проверка резервных копий Time Machine
- Каковы различия между MBR и GPT по сравнению с любой другой схемой разделов?
- Порт слушает, но никому не принадлежит
- Канадский английский на продуктах Apple
- Mac OSX: команда пользователей vs dscl для отображения списка пользователей
Поскольку вам нужно войти в панель настроек Java и пометить только JVM 7 таким образом:
Чтобы легко и быстро открыть панель « Предпочтения Java» в Mac OS X, вы можете просто вызвать spotlight с помощью ⌘ + SPACE и ввести « Системные настройки», которые будут отображаться в последней строке windows.
Установщик 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
на /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
link /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
В моем случае проблема заключалась в том, что Oracle устанавливал его в другое место, чем я привык.
Загрузить с Oracle: http://java.com/ru/download/mac_download.jsp?locale=en
-
Убедитесь, что он установлен правильно, просмотрев System Prefs:
- Command-Space, чтобы открыть Spotlight, введите «Системные настройки», нажмите enter.
- Щелкните значок Java в нижней строке. После того, как откроется панель управления Java, перейдите на вкладку «Java», «Просмотреть …» и убедитесь, что ваша установка работала. Вы также можете увидеть «Путь», который вы можете добавить в приведенные ниже команды, если они отличаются от моих.
-
Убедитесь, что версия такая, как вы ожидаете (sub в вашем пути по мере необходимости):
/ Библиотека / Интернет \ Плагины / JavaAppletPlugin.plugin / Содержание / Главная / bin / java -version
-
Создайте ссылку на / usr / bin / java для новой установки
sudo ln -fs / Библиотека / Интернет \ Плагины / JavaAppletPlugin.plugin / Содержание / Главная / bin / java / usr / bin / java
-
Проверка работоспособности вашей версии:
java -version
У меня возникла аналогичная проблема с терминалом, не обновляющим версию 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
запуска source ~/.bash_profile
Как я уже говорил, это временное решение для групповой поддержки, потому что исходный путь java жестко закодирован. На самом деле нет способа установить путь для получения последней информации, так как Apple якобы делает для терминала уже, и проблема в том, что переменная среды java_home Apple не обновляется.
Начиная с 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
в оболочке.
Для меня самый простой и простой способ – установить Java с использованием homebrew, как описано здесь:
https://stackoverflow.com/a/28635465
brew update brew cask install java
Основная проблема: /usr/bin/java
указывает на один, предоставленный самим OSX ( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
). Мы должны указать это на тот, который загружен Установщик JDK. Ниже приведены шаги для OSX 10.10.4 Yosemite.
- Откройте Системные настройки -> выберите Java. Откроется окно Java.
- Перейдите на вкладку Java вверху. Нажмите кнопку «Просмотр».
- Вкладка «Параметры среды Java Runtime Environment» открывается, как показано ниже:
- Дважды щелкните элемент «
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)
Вы можете выполнить следующую команду в своем терминале:
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
И это заменяет старый java новым.
http://www.java.com/en/download/faq/java_mac.xml – это хорошее место для понимания, в то время как Apple прекращает поддержку Java, почему настройки Java больше не существуют и полагаются на System_Preferences => Java = > Java, если установлена Java 7 из Oracle.
Могу ли я предложить вам взглянуть на инструмент Jenv
Это позволит вам переключаться в любое время между установленными JVM.
Просто как:
jenv global oracle-1.7
затем позже для целей тестирования:
jenv global oracle-1.6
И у вас есть гораздо больше доступных команд.
Жесткое кодирование пути JAVA_HOME может быть не лучшей идеей. Утилита /usr/libexec/java_home
работает для меня на Mac OSX Lion 10.7.5 и JDK 1.7.0_13. Согласно его странице руководства, он предназначен для использования с старой панелью настроек Java Apple, но, похоже, она работает с заменой, предоставляемой Oracle (панель управления Java). Например, running /usr/libexec/java_home -V
перечисляет все установленные JDK (и 1.6. * И 1.7. *) На моей машине.
Итак, как обсуждалось в других streamах (например, что мне нужно установить JAVA_HOME на OSX ), я бы порекомендовал добавить следующую строку в ваш .bash_profile:
export JAVA_HOME=$(/usr/libexec/java_home)
Это орехи! Как 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 …
Я думаю, вы можете попробовать установить jdk not jre. Установив jdk, java в / usr / bin / java будет заменен, и вся библиотека будет работать нормально.
Простое решение
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
В случае, если на вашем компьютере несколько версий 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
файл 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 находится в разных местах.
Вы можете запустить эту команду, чтобы найти версию Java, которая находится под / Library / Internet Plugins /:
defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion
Поскольку я не сталкивался с этой проблемой, я склоняюсь к догадкам –
Не могли бы вы попробовать:
Где мягкая ссылка «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
Исходя из этого, мы можем получить намек на продолжение?
Я решил эту проблему, повторно установив Yosemite, а затем перекрестно проверю версию java на терминале (java -version) и (javac -version). Он отлично работает сейчас. Он не меняется на java 7, поскольку версия 6 все еще присутствует (команда + n ) libray> java> javavirtualmachine> ваша текущая версия javac. Вам нужно обратиться в java home.
Я решил эту проблему с помощью 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
не сработало для меня, потому что я 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 в обозримом будущем.
Это происходит потому, что ваш .bash_profile не отражает изменений. Чтобы отразить это, просто используйте следующую команду
$ source .bash_profile
Установка через распределенный JDK DMG с сайта Oracle автоматически обновляет все для меня. Я видел (в El Capitan) обновление через System Preferences > Java
обновления, но не соответствующие командной строке. Установка через DMG выполняет эту работу.