- изменить версию java в macOS BigSur
- 4 ответа
- Как установить или изменить версию Java (JDK) по умолчанию на OS X?
- Решение без сторонних инструментов:
- JDK Switch Script
- Переключиться на Java 8
- Переключиться на Java 9
- Установить и настроить
- Команды — сверху конфиг
- Механизм
- Подсказки
- Как установить или изменить версию Java (JDK) по умолчанию на OS X?
- Решение без сторонних инструментов:
- JDK Switch Script
- Переключиться на Java 8
- Переключиться на Java 9
- Установить и настроить
- Команды — сверху конфиг
- Механизм
- Советы
изменить версию java в macOS BigSur
Я не могу изменить версию java в macOS BigSur. у меня есть следующие версии:
Когда я выполняю эту команду
У меня есть следующие версии:
Я хочу перейти на java 1.8 по умолчанию, поэтому я выполняю эту команду:
А затем, когда я проверяю версию java:
У меня все еще есть старый (более высокий)
Почему не работает?
4 ответа
Пожалуйста, используйте команду ниже: —
Вам нужно отключить JAVA_HOME и установить JAVA_VERSION, тогда он работает.
Или если вам нужно установить JAVA_HOME, вам нужно отключить его перед вызовом /usr/libexec/java_home
Меня смутила та же проблема сегодня после обновления macOS до Big Sur.
На моем Mac есть два JDK: Oracle JDK 11 и Oracle JDK 8.
Тогда /usr/libexec/java_home всегда возвращает /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home и игнорирует другие аргументы, такие как -v 1.8
После некоторых тестов я обнаружил, что это происходит только тогда, когда на вашем Mac установлена версия Oracle JDK 1.8.X.
Итак, я удалил Oracle JDK 1.8.x, /usr/libexec/java_home может вернуть правильный путь JDK 11.
Затем я попробовал AdoptOpenJDK 8, /usr/libexec/java_home может вернуть свой путь правильно, но игнорирует аргумент -v 11 , не может получить путь JDK 11.
Кажется, в команде java_home ЕСТЬ некоторые ошибки, если у вас только один JDK на вашем Mac — кроме Oracle JDK 8 — он должен работать нормально. Если у вас несколько JDK, возможно, он просто возвращает последний установленный путь JDK.
Так что либо оставьте только одну установку JDK, либо установите $JAVA_HOME env с абсолютным путем, все будет в порядке.
Я тоже. Так раздражал, он доставил мне неприятности. Кажется, он решается установкой «$ JAVA_VERSION». Пожалуйста, используйте команду ниже: —
Источник
Как установить или изменить версию Java (JDK) по умолчанию на OS X?
Как вы можете изменить версию Java по умолчанию на Mac?
Сначала запустите /usr/libexec/Java_home -V , который выведет что-то вроде следующего:
Выберите версию, которую вы хотите использовать по умолчанию ( 1.6.0_65-b14-462 для аргументов), затем:
или вы можете указать только основную версию, например:
Теперь, когда вы запустите Java -version , вы увидите:
Просто добавьте строку export Java_HOME… в файл инициализации вашей оболочки.
Этот ответ является попыткой ответить на вопрос: как управлять общесистемной версией Java _ (не только в текущей версии Shell), когда несколько версий JDK установлены в целях разработки на macOS El Capitan или новее (Сьерра, Хай Сьерра, Мохаве). Насколько я могу судить, ни один из текущих ответов не делает этого (*).
Как разработчик, я использую несколько JDK и хочу легко переключаться с одного на другой. Обычно у меня есть последняя стабильная версия для общего пользования и другие для тестов. Но я не хочу, чтобы система (например, когда я запускаю свою IDE) использовала последнюю версию «раннего доступа», которая у меня есть на данный момент. Я хочу контролировать систему по умолчанию, и она должна быть последней стабильной.
Следующий подход работает как минимум с Java 7–12 (ранний доступ на момент написания этой статьи), с Oracle JDK или OpenJDK (включая сборки По AdoptOpenJDK выпущен после середины октября 2018 года ).
Решение без сторонних инструментов:
- оставьте все JDK в их расположении по умолчанию под /Library/Java/JavaVirtualMachines . Система выберет самую высокую версию по умолчанию.
- Чтобы исключить выбор JDK по умолчанию, переименуйте его Contents/Info.plist в Info.plist.disabled . Этот JDK все еще может быть использован, когда $Java_HOME указывает на него, или явно указан в скрипте или конфигурации. Он будет просто игнорироваться системной командой Java .
Системный лаунчер будет использовать JDK с самой высокой версией среди тех, которые имеют файл Info.plist .
При работе в командной оболочке с альтернативным JDK выберите свой метод среди существующих ответов ( jenv или пользовательские псевдонимы/сценарии вокруг /usr/libexec/Java_home и т.д.).
(*) Текущие ответы либо устарели (больше не действительны для macOS El Capitan или Sierra), либо относятся только к одному JDK, либо не затрагивают общесистемный аспект. Многие объясняют, как изменить $Java_HOME , но это влияет только на текущую оболочку и то, что запускается оттуда. Это не повлияет на приложение, запущенное из панели запуска ОС (если вы не измените нужный файл и выйдите из системы/войдите в систему, что утомительно). То же самое для jenv, это круто и все такое, но, насколько я могу судить, оно просто меняет переменные окружения, поэтому оно имеет то же ограничение.
В дополнение к ответам, приведенным выше, я добавил следующие строки в свой .bash_profile , что делает его очень удобным для переключения (включая комментарий @ elektromin для Java 9):
После вставки выполните $ source .bash_profile
Я могу переключиться на Java 8, набрав следующее:
Маленькая рыбка на основе/usr/libexec/Java_home
Если вы не используете fish, вы можете сделать что-то подобное в bash:
Затем, чтобы переключиться между Java сделать:
Использовать jenv — это простой способ.
1. установить jenv
3.Симлинк путь JDK
4.Все все готово
установить по умолчанию:
Это немного сложно, но попробуйте выполнить шаги, описанные в Установка Java на OS X 10.9 (Mavericks) . По сути, вам придется обновить свой псевдоним до Java .
После установки JDK 1.7 вам нужно будет ввести Sudo ln -snf , чтобы изменить ссылку на текущую Java . Для этого откройте Терминал и введите команду:
Обратите внимание, что каталог jdk1.7.0_51.jdk может меняться в зависимости от установленной версии SDK.
Теперь вам нужно установить Java_HOME , чтобы указать, где был установлен jdk_1.7.0_xx.jdk . Снова откройте Терминал и введите:
Вы можете добавить строку export Java_HOME выше в свой файл .bashrc , чтобы Java постоянно находилась в вашем терминале
установить JDK, а не только JRE
TextEdit покажет вам пустую страницу, которую вы можете заполнить.
добавить в документ: export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
заменить на загруженную версию.
поместите это в ваш
/.profile и используйте его в своем терминале, например, setjdk 1.8 , setjdk 1.7 , setjdk 9 и т. д. и т. д.
Если у вас нет removeFromPath , то это:
Используйте jenv, это как менеджер среды Java. Это супер легко использовать и чистить
Для Mac выполните следующие действия:
Установка: Если вы используете bash, выполните следующие действия:
Добавьте нужные версии JVM в jenv:
jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home
Проверьте установленные версии:
Установите версию Java, которую вы хотите использовать:
С официальной страницы Apple Java_home (1) :
Если вы все еще не можете установить его. используя эту команду.
экспорт Java_HOME = /usr/libexec/Java_home -v 1.8
тогда вы должны использовать это.
экспорт Java_HOME = $(/usr/libexec/Java_home -v 1.8)
это обязательно сработает.
Сначала выясните, где вы храните переменные среды.
Шаги для настройки переменной среды: —
- Загрузите JDK с Java
- установить его двойным щелчком
Теперь настройте переменные окружения в вашем файле
а. Для emacs.profile вы можете использовать эту ссылку OR, см. Скриншот ниже
b. Для настройки профиля ZSH —
Все готово Теперь вы можете легко обновить или снизить версию Java.
JDK Switch Script
Я адаптировал ответ от @Alex выше и написал следующее, чтобы исправить код для Java 9.
Переключиться на Java 8
Переключиться на Java 9
Если вы используете fish, и вы используете mac, и вы хотите переключаться между JDK, то ниже для меня работает на mac.
Ответ @ kenglxn не сработал для меня, и я понял, что bcos не установил -g, который является глобальным!
Поместите ниже в
Чтобы узнать, какую версию/минорную версию вы установили, вы можете сделать:
На основе ответа @markhellewell я создал несколько псевдонимов, которые сделают это за вас. Просто добавьте их в свой загрузочный файл Shell
Вот как я это делаю на моем Linux (Ubuntu/Mint mate), думаю, Mac может сделать это аналогичным образом.
Установить и настроить
Шаги:
- [Базовая — часть]
- Загрузите jdk ( .tgz file) вручную.
- Распакуйте и переименуйте правильно, в нужном месте.
Например, /mnt/star/program/Java/jdk-1.8 - Сделайте программную ссылку, которая будет изменена для переключения версии Java позже.
Например, ln -s /mnt/star/program/Java/jdk-1.8 /mnt/star/program/Java/java
Таким образом, /mnt/star/program/Java/java — это мягкая ссылка. - Установите Java_HOME в стартовом скрипте.
Может использовать файл типа /etc/profile.d/eric.sh или просто использовать
/.bashrc .
Например, Java_HOME=/mnt/star/program/Java/java
например
/mnt/star/program/Java/jdk-11
/.bashrc определите переменную для различных версий Java.
например
_E_Java_HOME_11=’/mnt/star/program/Java/jdk-11′
_E_Java_HOME_8=’/mnt/star/program/Java/jdk-8′
# dir of default version,
_E_Java_HOME_D=$_E_Java_HOME_8
В
/.bashrc определите команду для переключения версии Java.
например
## switch Java version,
alias jv11=»rm $Java_HOME; ln -s $_E_Java_HOME_11 $Java_HOME»
alias jv8=»rm $Java_HOME; ln -s $_E_Java_HOME_8 $Java_HOME»
# default Java version,
alias jvd=»rm $Java_HOME; ln -s $_E_Java_HOME_D $Java_HOME»
alias jv=»Java -version»
В терминале source
/.bashrc чтобы изменения вступили в силу.
Команды — сверху конфиг
Команды:
- jv11
Переключиться на Java 11 - jv8
Переключиться на Java 8 - jvd
Переключиться на версию Java по умолчанию, которая обозначена _E_Java_HOME_D , определенной выше. - jv
Показать версию Java.
Пример вывода:
Механизм
- Он переключается путем изменения программной ссылки, которая используется как Java_HOME .
Подсказки
На моей машине, когда я устанавливаю jdk вручную, я сохраняю минорную версию, затем делаю мягкую ссылку с основной версией, но без минорной версии.
например
// это фактический каталог,
jdk1.8.0_191
// это мягкая ссылка на jdk1.8.0_191
jdk-8
// это мягкая ссылка на jdk-8 или jdk-11
Java
Я определяю псевдоним команды в
/.bashrc , но определяю переменную в отдельном файле.
Я использую
/.eric_var для определения переменных, и
/.bashrc будет его источником (например, source $HOME/.eric_var ).
Источник
Как установить или изменить версию Java (JDK) по умолчанию на OS X?
Как вы можете изменить версию Java по умолчанию на Mac?
Первый запуск, /usr/libexec/java_home -V который выдаст что-то вроде следующего:
Выберите версию, которую вы хотите использовать по умолчанию ( 1.6.0_65-b14-462 для аргументов), затем:
или вы можете указать только основную версию, например:
Теперь, когда вы бежите, java -version вы увидите:
Добавить export JAVA_HOME… строку в файл инициализации вашей оболочки.
Для Баша (как утверждает антоних ):
Для рыбы (как заявлено ормурином)
Этот ответ является попыткой решить: как управлять java-версией в масштабе всей системы (не только в запущенной в данный момент оболочке), когда несколько версий JDK установлены для целей разработки на macOS El Capitan или более поздней (Sierra, High Sierra, Mojave) . Насколько я могу судить, ни один из текущих ответов не делает этого (*).
Как разработчик, я использую несколько JDK и хочу легко переключаться с одного на другой. Обычно у меня есть последняя стабильная версия для общего пользования и другие для тестов. Но я не хочу, чтобы система (например, когда я запускаю свою IDE) использовала последнюю версию «раннего доступа», которая у меня есть на данный момент. Я хочу контролировать систему по умолчанию, и она должна быть последней стабильной.
Следующий подход работает как минимум с Java 7-12 (ранний доступ на момент написания этой статьи), с Oracle JDK или OpenJDK (включая сборки AdoptOpenJDK, выпущенные после середины октября 2018 г. ).
Решение без сторонних инструментов:
- оставить все JDK в их расположении по умолчанию, под /Library/Java/JavaVirtualMachines . Система выберет самую высокую версию по умолчанию.
- Чтобы исключить выбор JDK по умолчанию, переименуйте его Contents/Info.plist в Info.plist.disabled . Этот JDK все еще можно использовать, когда $JAVA_HOME на него указывают, или явно указывать в сценарии или конфигурации. Это будет просто проигнорировано командой системы java .
Система запуска будет использовать JDK с самой высокой версией среди тех, которые имеют Info.plist файл.
При работе в оболочке с альтернативным JDK выберите свой метод среди существующих ответов ( jenv или пользовательских псевдонимов / сценариев /usr/libexec/java_home и т. Д.).
(*) Текущие ответы либо устарели (больше не действительны для macOS El Capitan или Sierra), либо относятся только к одному JDK, либо не затрагивают общесистемный аспект. Многие объясняют, как измениться $JAVA_HOME , но это влияет только на текущую оболочку и то, что запускается оттуда. Это не повлияет на приложение, запущенное из панели запуска ОС (если вы не измените нужный файл и не выйдете из системы / не авторизованы), что утомительно. То же самое для jenv, это круто и все такое, но, насколько я могу судить, оно просто меняет переменные окружения, поэтому оно имеет то же ограничение.
В дополнение к ответам, приведенным выше, я добавил следующие строки в мой .bash_profile (или .zshrc для MacOS 10.15+), что делает его очень удобным для переключения (включая комментарий @ elektromin для java 9):
После вставки выполните $ source .bash_profile
Я могу переключиться на Java 8, набрав следующее:
Маленькая рыбка на основе / usr / libexec / java_home
Если вы не используете fish, вы можете сделать что-то подобное в bash:
Затем, чтобы переключиться между Java сделать:
Это немного сложно, но попробуйте выполнить шаги, описанные в Установка Java на OS X 10.9 (Mavericks) . По сути, вам придется обновить свой псевдоним до java .
После установки JDK 1.7 вам нужно будет сделать sudo ln -snf , чтобы изменить ссылку на текущую java . Для этого откройте Терминал и введите команду:
Обратите внимание, что каталог jdk1.7.0_51.jdk может меняться в зависимости от установленной версии SDK.
Теперь вам нужно JAVA_HOME указать, где jdk_1.7.0_xx.jdk был установлен. Откройте снова Терминал и введите:
Вы можете добавить export JAVA_HOME строку выше в вашем .bashrc файле, чтобы иметь Java постоянно в вашем терминале
Использовать jenv — это простой способ.
1. установить jenv
3.Симлинк путь JDK
4.Все все готово
установить по умолчанию:
установить JDK, а не только JRE
TextEdit покажет вам пустую страницу, которую вы можете заполнить.
добавить в документ: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
(замените jdk1.8.0_144.jdk загруженной версией)
Используйте jenv, это как менеджер среды Java. Это супер легко использовать и чистить
Для Mac выполните следующие действия:
Установка: Если вы используете bash, выполните следующие действия:
Добавьте нужные версии JVM в jenv:
Проверьте установленные версии:
Установите версию Java, которую вы хотите использовать:
поместите это в ваш
/ .profile и используйте его в своем терминале, например setjdk 1.8 , setjdk 1.7 и setjdk 9 т. д. и т. д.
Если у вас нет, removeFromPath то это:
Четыре простых шага с использованием терминала для людей, которые используют процесс по умолчанию .. 🙂
echo $JAVA_HOME дает вам текущий дом Java. Например: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/ перенесет вас в папку, где вы обычно устанавливаете jdks (это может отличаться для ваших машин)
добавить следующую команду в
macOS El Capitan или новее выберет более высокую версию JDK, доступную в /Library/Java/JavaVirtualMachines , так что для понижения версии вы можете переименовать файл Info.plist во что-то похожее, Info.plist.disabled чтобы ОС выбрала предыдущую версию.
Если вы все еще не можете установить его. используя эту команду.
экспорт JAVA_HOME = /usr/libexec/java_home -v 1.8
тогда вы должны использовать это.
экспорт JAVA_HOME = $(/usr/libexec/java_home -v 1.8)
это обязательно сработает.
Сначала выясните, где вы храните переменные среды.
Шаги по настройке переменной среды: —
- Скачать JDK от JAVA
- установить его двойным щелчком
Теперь настройте переменные окружения в вашем файле
а. Для emacs.profile вы можете использовать эту ссылку или увидеть скриншот ниже
б. Для настройки профиля ZSH —
Все готово Теперь вы можете легко обновить или снизить версию JAVA.
JDK Switch Script
Я адаптировал ответ от @Alex выше и написал следующее, чтобы исправить код для Java 9.
Переключиться на Java 8
Переключиться на Java 9
Вы можете добавить его в свой .bash_profile, чтобы установить версию по умолчанию.
Если вы используете fish, и вы используете mac, и вы хотите переключаться между JDK, то ниже для меня работает на mac.
Ответ @ kenglxn не сработал для меня, и я понял, что bcos не установил -g, который является глобальным!
Поместите ниже в
/ .config / fish / config.fish
Чтобы узнать, какую версию / минорную версию вы установили, вы можете сделать:
Если у вас есть несколько версий, и вы хотите что-то запустить с использованием определенной версии, используйте этот пример:
На основе ответа @markhellewell я создал несколько псевдонимов, которые сделают это за вас. Просто добавьте их в свой файл запуска оболочки
Вот как я делаю это на моем Linux (Ubuntu / Mint mate) , я думаю, Mac может сделать это аналогичным образом.
Установить и настроить
шаги:
- [Основное — часть]
- Загрузите jdk ( файл .tgz ) вручную.
- Распакуйте и переименуйте правильно, в нужном месте.
например /mnt/star/program/java/jdk-1.8 - Сделайте программную ссылку, которая будет изменена для переключения версии Java позже.
например ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
Таким образом , /mnt/star/program/java/java это мягкая ссылка. - Установите JAVA_HOME в стартовом скрипте.
Может использовать файл, как /etc/profile.d/eric.sh , или просто использовать
/.bashrc .
например JAVA_HOME=/mnt/star/program/java/java
например
/mnt/star/program/java/jdk-11
/.bashrc , определить переменную для различных версий Java.
например
_E_JAVA_HOME_11=’/mnt/star/program/java/jdk-11′
_E_JAVA_HOME_8=’/mnt/star/program/java/jdk-8′
# dir of default version,
_E_JAVA_HOME_D=$_E_JAVA_HOME_8
В
/.bashrc , определите команду для переключения версии Java.
например
## switch java version,
alias jv11=»rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME»
alias jv8=»rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME»
# default java version,
alias jvd=»rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME»
alias jv=»java -version»
В терминале, source
/.bashrc чтобы изменения вступили в силу.
Команды — сверху конфиг
Команды:
- jv11
Переключиться на Java 11 - jv8
Переключиться на Java 8 - jvd
Переключиться на версию Java по умолчанию, которая обозначена как _E_JAVA_HOME_D определено выше. - jv
Показать версию Java.
Пример вывода:
Механизм
- Он переключается путем изменения программной ссылки, которая используется как JAVA_HOME .
Советы
На моей машине, когда я устанавливаю jdk вручную, я сохраняю минорную версию, затем делаю мягкую ссылку с основной версией, но без минорной версии.
например,
// это фактический каталог,
jdk1.8.0_191
// это мягкая ссылка на jdk1.8.0_191
jdk-8
// это мягкая ссылка на jdk-8 или jdk-11
java
Я определяю псевдоним команды
/.bashrc , но определяю переменную в отдельном файле.
Я использую
/.eric_var для определения переменных, и
/.bashrc будет его источником (например source $HOME/.eric_var ).
Источник