Установлен 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 359

24 ответа:

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

Java Preferences

легко и быстро открыть Настройки 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_17JAVA_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

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

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

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

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

    sudo ln-fs /Library/Internet\ Plug-Ins/JavaAppletPlugin.плагин / содержание / Home/bin /java/usr/bin / java

  4. здравомыслие проверьте свою версию:

    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 открывается как под: JRE Settings tab
  • дважды щелкните на 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 в обозримом будущем.

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

$ source .bash_profile

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