it-swarm.com.ru

После установки Java JDK 7 для Mac OS X - mvn -version по-прежнему показывает версию Java 1.6.0_31

Oracle выпустила Java JDK 7 26 апреля для Mac OS X. Я следовал инструкциям по установке, и когда я делаю Java-версию в окне терминала, я получаю:

Java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

Однако, когда я делаю mvn -version в окне терминала, я получаю:

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", Arch: "x86_64", family: "mac"

Как я могу заставить Maven использовать Java JDK 1.7.0_04?

Спасибо за помощь.

116
Bruce Phillips

Наконец-то нашел ответ здесь:

http://www.adam-bien.com/roller/abien/entry/Java_se_development_kit_7

Вместо этого вы должны использовать Java_HOME=$(/usr/libexec/Java_home) на Mac, а затем установить текущий jdk через «Java Preferences.app».

Установите Java_HOME в ~/.profile

125
Bruce Phillips

Проблема в том, что символическая ссылка «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/install-jdk-7-mac-os-x

34
Mahmoud Adam

Чтобы найти путь из настроек Java, попробуйте /usr/libexec/Java_home -X

Моя запись Java7 выглядит так:

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.Oracle.Java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>
17
dmolony

Вам нужно изменить переменную окружения Java_HOME на новое расположение JDK 1.7.

Посмотрите на этот вопрос для возможных мест, где может быть определен Java_HOME. В терминале введите which Java, чтобы найти путь к вашей установке Java, а затем обновите Java_HOME, чтобы он указывал на этот путь (но исключая папку конечного бина).

9
Nate

В случае, если кто-либо устанавливает Maven на 64-битный Mac с Mac OSX, «Mavericks» сэкономит вам немного времени и усилий, чтобы установить Maven. Я пытался следовать этому (что не удалось, потому что местоположение Java_home изменилось на Mavericks:

http://maven.Apache.org/download.cgi

Я вырывал волосы, пока не нашел этот веб-сайт, который рекомендует вам установить homebrew и следовать инструкциям на этой странице: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on -mac-osx-109.html

после завершения не паникуйте, когда $ maven -version не работает, вместо этого используйте $ mvn --version, как рекомендуется maven.Apache.org/download.cgi. 

Это сработало, но потом я заметил, что Java SDK, который использовал Maven, была версия Java: 1.6.0_65, которая не является последней SDK, которую я установил в системе.

Однажды я установил Java_HOME = /usr/libexec/Java_home

Он использовал правильный SDK: Maven home: /usr/local/Cellar/maven/3.1.1/libexecJava версия: 1.7.0_45, поставщик: Oracle Corporation Java home:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Локаль по умолчанию: en_US, кодировка платформы: UTF-8 Имя ОС: "mac os x", версия: "10.9", Arch: "x86_64", семейство: "mac"

Удачи! Но подождите ... В следующий раз, когда я открыл терминал и запустил mvn -v, он вернулся к Java версии 1.6. WTH!

какая-то предполагаемая ошибка из того, что я прочитал, использую: echo Java_HOME = /usr/libexec/Java_home -v 1.7 | Sudo tee -a/etc/mavenrc

и сейчас:

Дом Maven: /usr/local/Cellar/maven/3.1.1/libexecJava версия: 1.7.0_45, поставщик: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk /Contents/Home/jre Языковой стандарт по умолчанию: en_US, кодировка платформы: UTF-8 Имя ОС: "mac os x", версия: "10.9", Arch: "x86_64", семейство: "mac"

7
ConfusedDeer

Причина, по которой Maven все еще использует Java 6, заключается в том, что запускающий его скрипт/usr/bin/mvn не использует правильный метод OS/X для разрешения текущей версии Java, как указано в настройках Java. Смотрите эту проблему Maven для деталей:

http://jira.codehaus.org/browse/MNG-4226

Голосование может исправить это; тем временем, если вы измените скрипт/usr/bin/mvn, как показано в комментариях и патче по этому вопросу, вы получите желаемый результат.

4
Robert Elliot

Хорошо на моей машине. Да, установщик Oracle точно не справился со своей задачей, и это меня смутило без конца после того, как 1.6 все еще работал.

Java run time was updated 

Java -version
Java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

но SDK HOME на самом деле это ссылка на SIM-карту, все еще указывающая на 1.6

/Library/Java/Home в Finder GetInfo указывает на /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

в терминале 

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

Иди разберись.

Я нашел 1.7 здесь, и я использую это для сборки с: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

2
dave

Я думаю, что проблема частично связана с механизмом запуска Java. Мне удалось заставить Eclipse запускать мой код под Java7, но я думаю, что сам Eclipse все еще работает под Java6. Кроме того, у меня есть Java-программа, которая была скомпилирована последний год назад и построена с использованием jarbundler-2.1.0.jar (с опцией jvmversion = "1.6+"). Когда я дважды щелкаю по файлу .app, он запускает Java6, но когда я дважды щелкаю по файлу .jar внутри .app, он запускает Java7.

Кроме того, я не использую Java_HOME, но я все еще получаю правильную версию Java "1.7.0_04", показанную в вопросе. Java_HOME, кажется, красная сельдь. Возможно, Maven нуждается в этом, но Eclipse, похоже, не использует его, а также не запускает файлы JAR.

И после настройки Java7 в инструменте настроек Java это, похоже, не влияет на запуск Java-файлов .app. Однако это делает «Java-версию» из терминала хорошо работающей. Я попытался снять все, кроме опции Java7, и тогда Eclipse вообще не запускался. 

0
dmolony

Если ваш Java_HOME находится в bash локального пользователя, mvn выберет текущую версию Java системы независимо от того, какой Java_HOME вы установили.

Поэтому сначала запустите команду ' which mvn ' и проверьте, какой исполняемый файл mvn вы используете. После этого отредактируйте этот файл mvn и измените переменную Java_HOME на предпочитаемую вами домашнюю страницу Java.

0
Ankit Bhatnagar