Установлен Java 7 на Mac OS X, но терминал по-прежнему использует версию 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, но если это не работает для вас, проверьте .файл (или .bashrc) файл настройки, чтобы увидеть, если вы ранее экспортировали любую версию java.
24 ответа:
потому что вам нужно войти в панель настроек Java и пометить только JVM 7 таким образом :
легко и быстро открыть Настройки Java панель в Mac OS X вы можете просто вызвать spotlight с ⌘+пробел и типа Системные Настройки он появится в последней строке окна.
установщик 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 (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 в пакеты Java на основе Oracle. Вышеуказанное решение работает нормально с Mac OS X 10.8.2
в моем случае проблема заключалась в том, что Oracle устанавливал его в другое место, чем я привык.
загрузить из Oracle:http://java.com/en/download/mac_download.jsp?locale=en
убедитесь, что он установлен правильно, посмотрев в System Prefs:
- Command-Space чтобы открыть Spotlight, введите "Системные настройки", нажмите enter.
- щелкните значок Java в нижней строке. После Панели Управления Java открывает, нажмите вкладку "Java", " вид...и убедитесь, что установка работала. Вы также можете увидеть "путь", который вы можете вложить в команды ниже, если они отличаются от моих.
убедитесь, что версия, как вы ожидаете (sub в вашем пути по мере необходимости):
/ Библиотека / Интернет\ Плагины / JavaAppletPlugin.плагин / содержание / главная / bin / java-версия
создать ссылку из /usr / bin / java на ваш новый установить
sudo ln-fs /Library/Internet\ Plug-Ins/JavaAppletPlugin.плагин / содержание / Home/bin /java/usr/bin / java
здравомыслие проверьте свою версию:
java-версия
я столкнулся с аналогичной проблемой с терминалом, не обновляющим версию java в соответствии с версией, установленной на mac.
не было никаких проблем с установкой переменной среды JAVA_HOME
Я придумал временное и несколько болезненное, но рабочее решение.
в тебе .файл добавить строку:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"
(это путь на моей машине, но может быть по-другому на вашем, убедитесь, чтобы получить ваш. Пути должны совпадать до /Library / Java / JavaVirtualMachines/)
запустить
source ~/.bash_profile
Как я уже упоминал, это временное решение band-aid, потому что домашний путь java жестко закодирован. На самом деле нет способа установить путь, чтобы получить последнюю версию, так как это то, что Apple якобы делает для терминала уже, и проблема в том, что переменная среды java_home от Apple не обновляется.
так как El Capitan, трудно удалить
/usr/bin/java
символическая ссылка, из-за введения новой политики "без корней".поэтому, я просто добавил путь к последней версии Java (в моем случае это
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
) кPATH
в своем.bashrc
file:# 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 открывается как под:
- дважды щелкните на
Path
элемент и скопируйте путь (cmd+c). Это последняя версия, установленная установщиком/обновителем JDK. В моем случае, путь был/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
- открыть терминал. На этом шаге мы собираемся указать (символическая ссылка,
ln -s
command) системный Java-двоичный файл до последнего, который мы обнаружили на предыдущем шаге. Выполните следующую команду:
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java
вот и все. Верифицировать, вы можете просто запустить
java -version
на терминале. Он должен выводить последнюю версию, которую вы установили/обновили.
вы можете выполнить следующую команду в вашем терминале :
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
и это заменяет java старый с новым.
Я
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)
http://www.java.com/en/download/faq/java_mac.xml это хорошее место, чтобы понять, в то время как Apple прекращает поддержку Java, почему настройки Java больше не существуют и полагаются на System_Preferences => Java => Java, если установлена Java 7 от Oracle.
могу я предложить вам взглянуть на инструмент Jenv
Это позволит вам переключаться в любое время между установленными JVMs.
просто:
jenv global oracle-1.7
потом для теста:
jenv global oracle-1.6
и у вас есть гораздо больше доступных команд.
жесткое кодирование пути JAVA_HOME может быть не лучшей идеей. Элемент
/usr/libexec/java_home
утилита sill работает для меня на Mac OSX Lion 10.7.5 и JDK 1.7.0_13. Согласно его man-странице, он предназначен для использования со старой панелью настроек Java Apple, но, похоже, он работает с заменой, предоставляемой Oracle (Панель управления Java). Например, под управлением/usr/libexec/java_home -V
список всех установленных JDKs (оба 1.6.* и 1.7.*) на моей машине.Итак, как обсуждалось в других потоках (например что должен Я установил JAVA_HOME на OSX), Я бы все равно рекомендовал добавить следующую строку к вашему .файл:
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...
Простое Решение
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Я думаю, что вы можете попробовать установить jdk не jre. Установив jdk, java в /usr/bin / java будет заменен, и вся библиотека будет работать нормально.
в случае, если у вас есть несколько версий 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 находится в разных местах.
вы можете запустить эту команду, чтобы найти версию 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 - > /система/библиотека/фреймворки/JavaVM.framework / Versions / Current / Commands / java_home
* * ls-lrt /System/Library/Frameworks/JavaVM.каркас/варианты Мой 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-версия) и (javac-версия). он отлично работает now.It не изменяется на java 7, поскольку версия 6 все еще присутствует на (command + 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
не работает для меня, потому что у меня естьOperation not permitted
. El Capitan теперь защищает определенные системные каталоги в режиме "без корней" (a.k.a. system Integrity Protection). Он применим к macOS Sierra и, вероятно, к новым версиям macOS в обозримом будущем.