it-swarm.com.ru

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

Я установил JDK 7u7, загруженный с сайта Oracle. Но после установки терминал все еще показывает версию 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 установлена ​​на 1.6

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

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

375
Yang

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

Java Preferences

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

64
aleroot

Установщик 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
294
Ákos

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

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

113
BrainO2

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 

103
Uwe Günther

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

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

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

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

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

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

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

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

    Java-версия

56
dale.hamill

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

32
Derek

Начиная с 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 в командной консоли.

24
TabeaKischka

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

https://stackoverflow.com/a/28635465

brew update
brew cask install Java
20
Bernhardt Scherer

Основная проблема: /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) двоичный файл системы Java на самый последний, который мы обнаружили на предыдущем шаге. Запустите следующую команду:

Sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java /usr/bin/Java

Это оно. Для проверки вы можете просто запустить Java -version На терминале. Должна появиться последняя версия, которую вы установили/обновили.

12
Aswin Kumar

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

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

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

11
Amulya Kashyap

Я сделал 

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)
10
Climbs_lika_Spyder

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

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

Просто как:

jenv global Oracle-1.7

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

jenv global Oracle-1.6

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

7
TitiMoby

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

7
revher

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

6
Kevin Parker

Жесткое кодирование пути Java_HOME может быть не самой лучшей идеей. Утилита /usr/libexec/Java_home работает для меня на Mac OSX Lion 10.7.5 и JDK 1.7.0_13. Согласно справочной странице, она предназначена для использования со старой панелью Java Preferences от Apple, но, похоже, она работает с заменой, предоставленной Oracle (Java Control Panel). Например, при запуске /usr/libexec/Java_home -V перечисляются все установленные JDK (и 1.6. *, И 1.7. *) На моем компьютере.

Итак, как обсуждалось в других потоках (например, что я должен установить для Java_HOME в OSX ), я все равно рекомендовал бы добавить следующую строку в ваш .bash_profile:

export Java_HOME=$(/usr/libexec/Java_home)
6
zagyi

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

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

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

3
ParaDevil

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

3
nxhoaf

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

$ source .bash_profile
1
Raghav Sharma

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

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

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

0
AJAY

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

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

brew tap andycillin/tap
brew install Java-switcher

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

Java-switcher 1.7

или же

Java-switcher 10
0
Andy Tran

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

0
Santanu Karar

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

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

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

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

0
user1428716

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

0
Charles Hamel