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

391

Я установил 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.

Ян
источник
23
У меня была эта проблема, но я только обновил JRE, а не JDK. Как только я обновил JDK, он показал правильную версию.
Пол Мазеррат
Мигрировать это, чтобы спросить другого?
Накилон
14
Просто чтобы привлечь дополнительное внимание к комментарию @ Mazzy, сделать легкую ошибку. Загрузка JRE v7 приведет к появлению версии 7 при запуске средства проверки версии в Интернете или при чтении панели управления Java, но при вызове Java из командной строки вы будете запускать более старую версию из ранее установленного JDK. Так что перепроверьте, чтобы убедиться, что вы установили JDK, а не только JRE.
Кэм Джексон
1
Лучший способ решить эту проблему - использовать export JAVA_HOMEподход, как описано здесь, более гибким способом.
Брэд Паркс
5
Позвольте мне подчеркнуть это заглавными буквами: МНОГИМ ЛЮДЯМ, НАХОДЯЩИМ НА ЭТОЙ СТРАНИЦЕ, НЕОБХОДИМО ЗАГРУЗИТЬ И УСТАНОВИТЬ ПОСЛЕДНЮЮ JDK. ПАНЕЛЬ УПРАВЛЕНИЯ JAVA ТОЛЬКО ОБНОВЛЯЕТ JRE.
Уолтер Тросс

Ответы:

64

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

Настройки Java

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

aleroot
источник
3
да, нашел это. но все еще версия 1.6 в терминале, мне нужно перезагрузить компьютер или что-то
Ян
1
Эта панель больше не существует в 10.8. Альтернативы?
Pepijn
68
@Pepijn Panale - это история Mac OSX 10.8.2, и в этом больше нет необходимости. Вместо этого вы должны использовать export JAVA_HOME=`/usr/libexec/java_home -v 1.7`для переключения на последнюю версию Java 7 JDK от Oracle.
Уве Гюнтер
23
Я думаю, что в какой-то момент они избавились от настроек Java. Он не найден Spotlight на моей коробке. Бег 10.8.5.
quickshiftin
1
Вы можете найти точное местоположение JAVA_HOME в -> Системные настройки -> Java. Нажмите вкладку «Java». Нажмите посмотреть. Переменная Path показывает ваш JAVA_HOME (плитка / Home).
agaase
298

Установщик 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
Ákos
источник
22
Вот команда: sudo ln -s / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java / usr / bin
Binarian,
11
Команда Виктора работает. Но вам также может понадобиться удалить существующую символическую ссылку на Javarm /usr/bin/java
Matt Florence
7
До тех пор, пока Oracle не улучшат этот процесс, вот HOWTO всего процесса установки java в системе osx, вплоть до этого заключительного шага символической ссылки и включая его: gist.github.com/johan/10590467
ecmanaut
61
я получилrm: /usr/bin/java: Operation not permitted
Адитья
37
Илиexport PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Мик
114

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

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

BrainO2
источник
7
установить полный JDK, а не только JRE.
BrainO2
5
-1 Это не помогло. Установка JDK не меняет /usr/bin/javaни JAVA_HOME. Но постановка JAVA_HOMEпомогла.
Андрей Немченко
3
Подтверждено ОК на OSX 10.9.4. Он не меняет ссылку / usr / bin, он меняет содержимое под ним. Итак /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java # But: /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java -version java version "1.7.0_67"
Джо Ацбергер
1
Также работал для JDK 1.8 - (установите JDK 1.8 вместо JRE 1.8)
Марк Чакериан
Я пытался установить Java 1.8, но это не сработало на El Capitan. Установка 1.7 решила мои проблемы.
СПРБРН
104

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

Уве Гюнтер
источник
4
+1 за этот ответ, который, по моему мнению, является правильным, поскольку он работает в версиях Mac OS до и после удаления «Java Preferences» и, показывая опцию «-v», демонстрирует, как можно использовать Java 6, даже если Java 7 установлен (что я и хочу). Поэтому на моем Mac под управлением Lion (10.7.5) я использую ту же команду с «-v 1.6». Это очень важно, потому что мне нужна Java 6, а Oracle не предоставляет ее для Mac OS - только Java 7, и это позволяет мне использовать установленную JAva 6, даже если Java 7 установлена.
ревень
1
Кроме того , чтобы сделать его более гибким: mikemainguy.blogspot.com/2014/11/...
Мейнгай
дополнительную информацию можно найти здесь для этого удивительного ответа!
Брэд Паркс
Это работало для меня в Sierra 10.12 после установки 1.8 JKD, экспорт работал, меняя 1.7 на 1.8. Отличный ответ с помощью утилиты java_home !!
Скотт Байерс
56

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

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

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

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

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

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

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

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

    Java-версия

dale.hamill
источник
Сработало и для меня, я также попробовал другое объяснение, но в Maverix нет панели, где можно выбрать номер версии, а также изменение .bash_profile не сработало. ИДЕАЛЬНО!
Алекс Чио
Затмение не видит 1.7 под компилятором
Laser Hawk
Работал на меня! До = 1.6.0_65 и после использования этого решения = 1.7.0_60 .... спасибо! :)
математика
но eclipse выдает ошибку, как будто «общая библиотека jvm не содержит символа jni_createjavavm» .... :(
математика
1
Спасибо за помощь! Ничто другое не сработало, кроме этого. Запуск Йосемити
LordZardeck
33

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

Дерек
источник
4
Каталог пуст. $ ls / Библиотека / Java / JavaVirtualMachines /
Pepijn
1
У вас, вероятно, есть проблема с тем, где вы установили Java 7. Пожалуйста, перейдите на сайт оракула . Нажмите на ссылку «Java SE Development Kit 7u11», примите лицензионное соглашение и загрузите «jdk-7u11-macosx-x64.dmg». Используйте dmg для установки Java 7, и это должно поместить его в ваш каталог JavaVirtualMachines.
Дерек
Это одно из решений в Мохаве 10.14.1 в начале 2019 года
биты и
27

Поскольку Эль-Капитан, трудно удалить /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в оболочке.

TabeaKischka
источник
1
Это конкретное решение работало для меня на моем компьютере Mac OS X El Capitan. Я не обошел систему безопасности, установленную на el capitan, но установил Java версии 1.8. Выполнение экспорта JAVA_HOME = / мой конкретный путь и т. Д. И т. Д. / Не сработало (после перехода в настройки и определения пути к 1.8). Обратите внимание, что 1.6 все еще установлен. Мне пришлось создать файл .bashrc и установить путь, как описано здесь. Я запустил Java-версию и Shazzam! это сработало.
umbregachoong
Я так хотел, чтобы это работало, так как я работаю в El Capitan и не могу заставить работать любое другое решение. Я создал файл '.bashrc' и добавил строку, как указано выше, но если я наберу 'java -version', я все равно получу 1.6. Что-нибудь, что я мог пропустить?
noLongerRandom
@ user3810073 возможно, вам нужно запустить source .bashrc, чтобы перезагрузить содержимое .bashrc
TabeaKischka
Работал на меня. Я добавил строку в .bash_profile (в домашнем каталоге моего пользователя), а затем в источник .bash_profile. Тогда java-версия дала мне последнюю версию. Спасибо!
mrmuggles
Это также может быть достигнуто с помощью символической ссылки /usr/local/binследующим образом: sudo ln -sf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" /usr/local/bin/java это предположение /usr/local/binраньше /usr/binв вашем, $PATHкоторое должно быть по умолчанию.
lifeofguenter
21

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

https://stackoverflow.com/a/28635465

brew update
brew cask install java
Бернард Шерер
источник
Простое и чистое решение! Работал как шарм.
Рахул Шукла
2
Это единственное решение, которое обновило java и javac. Спасибо!
ldanilek
Работал как шарм :) Большое спасибо
Мохамед Салех
это установит самую новую версию Java, а не Java7
Ivo
13

Основная проблема: /usr/bin/javaуказывает на тот, который изначально был предоставлен самой OSX ( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java) Нам нужно указать на тот, который загружен установщиком JDK. Ниже приведены шаги для OSX 10.10.4 Yosemite.

  • Откройте Системные настройки -> выберите Java. Откроется окно Java.
  • Нажмите на вкладку Java в верхней части. Нажмите на кнопку «Просмотр».
  • Откроется вкладка «Параметры среды выполнения Java», как показано ниже: Вкладка «Настройки JRE»
  • Дважды щелкните 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 на терминале. Должна появиться последняя версия, которую вы установили / обновили.

Асвин Кумар
источник
2
У меня работает, за исключением того, что мне пришлось добавить -f к команде ln. В противном случае в случае неудачи с ln: / usr / bin / java: файл существует
Дейл
в моем случае я бы использовал usr/local/binвместо usr/binтерминальной команды
iAkshay
Я получаю "операция не разрешена".
Шардул
Получение пути таким способом является идеальным. Затем я смог экспортировать его и перезагрузить bashrc для решения проблемы с версией. В моем случае я перешел с версии 7 на 8 на Мохаве 10.14.1
биты и
12

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

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

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

Амуля Кашьяп
источник
1
Странно это заменяет, но потом, если я закрываю терминал и снова открываю, он снова показывает более старую версию
Parth Patel
это правда. такой странный очень временное решение
пользователь
1
добавьте это в файл .bashrc, source ~/.bashrcчтобы сделать его постоянным
Азимжон Ильхомов,
10

я сделал

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)
Climbs_lika_Spyder
источник
1
Это /usr/libexec/java_homeочень хороший показатель, спасибо!
Раффи
1
Сделал работу для меня после прочтения множества возможных решений! Спасибо :)
ronnyrr
7

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

revher
источник
2
Это хорошая информация, но вы должны предоставить больше подробностей, чем просто ссылку. Если в будущем ссылка будет разорвана, ваш ответ действительно не будет очень полезным.
psubsee2003
7

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

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

Просто как:

jenv global oracle-1.7

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

jenv global oracle-1.6

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

TitiMoby
источник
+1 за этот ответ, поскольку вы можете использовать Homebrew, если вы уже используете его в своей системе OS X. Гораздо чище, чем другие, я говорю. Более подробную информацию здесь: jenv.be
piku
6

Жесткое кодирование пути 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)
zagyi
источник
Я бы согласился с вашим комментарием, потому что это лучшая практика, но по какой-то причине переменная окружения java_home не установлена ​​правильно, поэтому это не работает. Я полагаю, что в последнем обновлении Apple ваше предложение является действием по умолчанию для JAVA_HOME в терминале и других связанных приложениях по умолчанию.
Дерек
@Derek Что именно вы имеете в виду под "неправильно задана переменная среды java_home"? Согласно этой статье/usr/libexec/java_home утилита предназначена , чтобы работать также с Java 7 версий, и он возвращает путь к самой дате вверх к установленной JDK. Он отлично работает на моей машине.
Загый
1
да, он должен работать, но не для людей с проблемой, о которой упоминал pepijin.
Дерек
6

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

Кевин Паркер
источник
Почему Apple не предоставляет правильный метод?
jwilleke
6

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

nxhoaf
источник
5

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

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Мик
источник
Потрясающие. Это решение сделало мой день. Большое спасибо Мик
Пользователь
3

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

DDDrop
источник
3

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

brew tap andycillin/tap
brew install java-switcher

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

java-switcher 1.7

или

java-switcher 10
Энди Тран
источник
Спасибо Энди, это было легко.
GreenROBO
1

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

defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion
Hefewe1zen
источник
1

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

$ source .bash_profile
Рагхав Шарма
источник
0

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

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

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

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

user1428716
источник
Прочитайте некоторые комментарии в Интернете о проблемах Java 7 с MAC-OSX, и он показывает заблокирован . Ссылка : grep.dk/tag/xprotect-meta-plist . В XProtect.meta.plist у меня есть Java 7 и Flash в списке. Пока в игре работает полиция уязвимостей
user1428716
0

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

AJAY
источник
0

Я решил эту проблему с 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 в обозримом будущем.

Чарльз Хэмел
источник
0

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

Сантану Карар
источник
0

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

Новейший 100% эффективный метод:


в bash:

vim ~/.bash_profile

Добавить

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
  • :wq сохранить
  • cmd + q принудительно завершить работу
  • снова откройте bash и введите java -version

Но на самом деле этот путь указывает на JRE не JDK.

Если вы хотите указать путь к JDK, вам нужно

  1. Убедитесь, что вы установили JDK, а не одну среду выполнения JRE
  2. заменив предыдущий путь PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk", вы можете перейти к /Library/Java/JavaVirtualMachinesтой версии JDK, на которую вы рассчитывали.
liangli
источник