Maven, JAVA_HOME с OS X
Попытка заставить Maven, Java и OS X играть хорошо вместе - что-то, что я делал несколько раз без проблем на машинах Linux и Windows. Я предположил, что все, что мне нужно было сделать, это загрузить Maven, настроить переменные окружения, и я буду хорош. Итак, вот фрагмент из моего .bash_profile...
export JAVA_HOME=/Library/Java/Home/
export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1
export PATH=$PATH:$M2_HOME/bin
Параметр JAVA_HOME
- это то, что Apple рекомендует использовать на этой странице Q & A. Однако после запуска терминала и запуска mvn --version
, здесь вывод...
Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
Java version: 1.6.0_17
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x" version: "10.6.2" arch: "x86_64" Family: "mac"
Любая идея, почему параметр JAVA_HOME
, который я устанавливаю в моем .bash_profile, игнорируется Maven? Это вызывает проблемы, потому что такие вещи, как rt.jar
, не найдены в JAVA_HOME
, используемом Maven. Я могу обойти это, создав символические ссылки и другие хакеры в доме, который использует Maven, но я бы предпочел, чтобы он работал правильно, так как это просто взорвется на меня в следующий раз, когда Apple подталкивает обновление Java. Спасибо за любую помощь...
Ответы
Ответ 1
Проблема в том, что символическая ссылка "CurrentJDK" внутри версий JavaVm.framework указывает на старый jdk, поэтому, когда я использовал следующие команды, чтобы установить CurrentJDK на последний (1.7.0_45), он работает
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK
ссылка:
http://java.dzone.com/articles/installing-jdk-7-mac-os-x
Ответ 2
В Mac OS X вы должны использовать /usr/libexec/java _home, чтобы определить правильный JAVA_HOME.
Смотрите Что мне нужно установить JAVA_HOME на OSX
Ответ 3
На моем Mac/Library/Java/Home символическая ссылка (фактически начало цепочки символических ссылок), которая в конечном итоге указывает на /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home. Поэтому я не думаю, что maven ничего не игнорирует. Это просто дает вам фактическое местоположение.
Ответ 4
У меня такая же настройка, и все работает нормально. UNSET переменная окружения "JAVA_HOME" в вашей оболочке script. Установка Mac позаботится об этом. Вы все равно устанавливаете его неправильно.
Отключите его, отправьте исходный файл или перезагрузите компьютер и повторите попытку.
Ответ 5
Ну, первое, что я бы проверил, это mvn - это script. Если это так, вы можете увидеть, как он ищет среду. Если это не так, я буду искать любые файлы конфигурации, обычно называемые .mvnrc, или что-то в /etc. Конечно, это не помешает RTFM!