it-swarm.com.ru

Где находится Java_HOME на macOS от Мохаве (10.14) до Льва (10.7)?

Java является дополнительным пакетом в последних версиях macOS. 

Тем не менее, после установки он выглядит так: Java_HOME переменная окружения неправильно установлена ​​.

518
Olivier Refalo

С дополнительным пакетом Java или Oracle JDK установлен, добавление одной из следующих строк в ваш файл ~/.bash_profile соответственно установит переменную окружения.

export Java_HOME="$(/usr/libexec/Java_home -v 1.6)"
or
export Java_HOME="$(/usr/libexec/Java_home -v 1.7)"
or
export Java_HOME="$(/usr/libexec/Java_home -v 1.8)"

Обновление: добавлен флаг -v на основе Jilles van Gurpответ .

1007
Olivier Refalo

/usr/libexec/Java_home - это не каталог, а исполняемый файл. Он выводит текущий настроенный Java_HOME и фактически не меняет его. Это то, для чего предназначено приложение Java Preferences, которое в моем случае кажется неработоспособным и фактически не меняет JVM правильно. В нем есть список 1.7 JVM, но я могу переключать/отменять и перетаскивать все, что я хочу, без фактического изменения вывода /usr/libexec/Java_home.

Даже после установки 1.7.0 u6 из Oracle на Lion и установки его по умолчанию в настройках, он все равно вернул Apple 1.6 домой. Единственное исправление, которое действительно работает для меня, это установка Java_HOME вручную:

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/

По крайней мере, таким образом при запуске из командной строки он будет использовать 1.7. /usr/libexec/Java_home все еще настаивает на 1.6.

Update: Понимание Java из командной строки в OSX дает лучшее объяснение того, как это работает. 

export Java_HOME=`/usr/libexec/Java_home -v 1.7` 

это способ сделать это. Обратите внимание, что обновление до 1.8 работает просто отлично.

100
Jilles van Gurp

Для меня, Mountain Lion 10.8.2, решение, за которое проголосовали большинство, не работает . Я установил jdk 1.7 через Oracle и maven из homebrew.

Мое решение взято из файла hadoop-env.sh hadoop, который я также установил из homebrew . Я добавляю следующее предложение в ~/.bash_profile, и это работает.

export Java_HOME="$(/usr/libexec/Java_home)"

Это решение также работает для OS X Yosemite с Java 1.8, установленной из Oracle.

78
onpduo

Ни один из приведенных выше ответов не помог мне. Я предполагаю, что все ответы для старшего OS X

Для OS X Yosemite 10.10 выполните следующие действия.

Используйте ваш любимый текстовый редактор, чтобы открыть: ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile

Добавьте следующую строку в файл и сохраните ее (: с последующим «x» для vim):

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

Затем в терминале введите следующие две команды, чтобы увидеть вывод:

$ source ~/.bash_profile

$ echo $Java_HOME

Во второй строке вы обновляете содержимое файла .bash_profile.

39
Giri

Вышесказанное не работает для меня с инструментами Amazon EC2, потому что он ожидает bin/Java и т.д. Под Java_HOME. /System/Library/Frameworks/JavaVM.framework/Home сработал.

28
Cawflands

Обновление для Java 9 и некоторый аккуратный псевдоним.

В .bash_profile:

export Java_HOME8=`/usr/libexec/Java_home --version 1.8`
export Java_HOME9=`/usr/libexec/Java_home --version 9`

Обратите внимание, что для последней версии это 9, а не 1.9.

Установить активную Java:

export Java_HOME=$Java_HOME8
export PATH=$Java_HOME/bin:$PATH

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

alias j8='export Java_HOME=$Java_HOME8; export PATH=$Java_HOME/bin:$PATH'
alias j9='export Java_HOME=$Java_HOME9; export PATH=$Java_HOME/bin:$PATH'

Тест в терминале:

% j8 
% Java-версия
Java версия "1.8.0_121" 
 Java (TM) Среда выполнения SE (сборка 1.8.0_121-b13) 
 Java HotSpot (TM) 64- Бит-сервер VM (сборка 25.121-b13, смешанный режим) 
% J9 
% Java-версия
Java версия "9" 
 Java (TM) SE Runtime Environment (сборка 9+) 181) 
 64-разрядный сервер Java HotSpot (TM) VM (сборка 9 + 181, смешанный режим) 

Правка: Обновление для Java 10

 export Java_HOME10 = `/ usr/libexec/Java_home --version 10` 
 alias j10 = 'export Java_HOME = $ Java_HOME10; экспорт PATH = $ Java_HOME/bin: $ PATH '

Правка: Обновление для Java 11

 export Java_HOME10 = `/ usr/libexec/Java_home --version 11` 
 alias j11 = 'export Java_HOME = $ Java_HOME11; экспорт PATH = $ Java_HOME/bin: $ PATH '
24
Peter Keller

Для OS X вы можете сделать:

export Java_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/Java_home`
18
sufinawaz

В Mac OS X Lion для запуска Visualgc я использовал:

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

Следующее сработало для меня. Я использую ZSH на OSX Yosemite с установленной Java 8.

Следующая команда /usr/libexec/Java_home испускает путь к JDK home:

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

В вашем ~/.zshrc,

export Java_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
13
Hemanta

Более новые Oracle JVM, такие как 1.7.0_21-b12, устанавливаются здесь:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

10
Archie

Лучший (более обновляемый) способ - использовать следующее:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

Это должно работать и с AWS, так как он имеет bin под Home

10
czarcrab

Мой подход:

.bashrc

export Java6_HOME=`/usr/libexec/Java_home -v 1.6`
export Java7_HOME=`/usr/libexec/Java_home -v 1.7`
export Java_HOME=$Java6_HOME

# -- optional
# export PATH=$Java_HOME/bin:$PATH

Это позволяет очень легко переключаться между J6 и J7

5
Mike Mitterer

для macOS Mojave 10.14.1 и Java 11.0.1 Я установил профиль как

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

введите в терминале это, чтобы подтвердить:

$Java_HOME/bin/Java -version

Java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
5
Jiulong Zhao

Для Mac OS X 10.9 я установил последнюю версию JRE из Oracle, а затем сбросил Java_HOME на /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home. 

Я уверен, что есть лучший способ, но заставил меня работать. 

hughsmac: ~ hbrien $ echo $ Java_HOME /Библиотека/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

2
Hugh Brien

OSX Yosemite, ZSH и Java SE Runtime Environment 8, мне пришлось: 

$ Sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

и в ~/.zshrc измените Java_HOME на export Java_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"

2
mmell

После обновления Mac OS возникла та же проблема, и у меня сработало следующее:

  1. cmd> vi ~/.bash_profile 

  2. Добавьте/обновите строку для Java_HOME: Export Java_HOME = "/ Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/Home"

  3. cmd> source ~/.bash_profile или откройте новый терминал

Я думаю, что версия JDK может отличаться, так что просто используйте версию, которая у вас есть в/Library/Java/JavaVirtualMachines /

1
user1270392

Если вам нужно иметь несколько версий JDK под Mac OS X (Yosemite), может быть полезно добавить некоторые сценарии для автоматического переключения между ними. 

Что вы делаете, это отредактируйте ваш ~/.bash_profile и добавьте следующее:

function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
   if [ -n "${Java_HOME+x}" ]; then
    removeFromPath $Java_HOME
   fi
   export Java_HOME=`/usr/libexec/Java_home -v [email protected]`
   export PATH=$Java_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
setjdk 1.7

Сценарий сначала удаляет другие версии JDK вPATH, чтобы они не мешали нашей новой версии JDK. Затем он несколько умно использует/usr/libexec/Java_home , который представляет собой команду, в которой перечислены установленные версии JDK. Аргумент -v указывает Java_home возвращать путь JDK с предоставленной версией, например 1.7. Мы также обновляемПУТЬ, чтобы он указывал на каталог bin недавно найденного каталога Java_HOME . В конце мы можем просто выполнить функцию, используя

setjdk 1.7

который выбирает последнюю установленную версию JDK ветки 1.7. Чтобы выбрать конкретную версию, вы можете просто выполнить

setjdk 1.7.0_51

вместо. Запустите/usr/libexec/Java_home -V , чтобы получить более подробную информацию о том, как выбирать версии.

Постскриптум Не забудьте source ~/.bash_profile после сохранения.

1
ZeKoU

Мне пришлось явно указать точный путь в моем эфире Macbook. 

Последовали шаги:

  1. попробуйте echo $Java_HOME (если он установлен, он покажет путь), если нет, попробуйте найти его с помощью Sudo find /usr/ -name *jdk
  2. Отредактируйте Bash p с помощью - Sudo nano ~/.bash_profile
  3. Добавьте точный путь к Java Home (путь из шага 2 выше) export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. Сохранить и выйти
  5. Проверьте Java_Home, используя - echo $Java_HOME

Я использую MACOS MOJAVE - 10.14.2 (18C54) на Macbook Air с Java 8

1
Robin

Для Mac Yosemite, 

JDK 1.7.0_xx использует

$ ls -ltar /usr/bin/Java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java

Java_HOME

/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
0
Mikey

Просто установите Java_home версии 1.8 jdk в файле netbeans.conf:

/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

раскомментировать строку:

netbeans_jdkhome="path/to/jdk"

и установите путь к вашему 1.8 JDK, в моем случае:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"

Этот подход предполагает наличие нескольких версий JDK на Mac OS

0
Alexander Kolundaev

Я использую Fish Shell на High Sierra 10.13.4 и установил Java через Brew.

Он не настроен автоматически, поэтому, чтобы установить его правильно в моей системе, я запускаю:

set -U Java_HOME (/usr/libexec/Java_home)
0
chrismacp