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

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

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?

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

Ответ 1

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

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

Ответ 2

Проблема в том, что символическая ссылка "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

Ответ 3

Чтобы найти путь от Java Preferences, попробуйте /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>

Ответ 4

Вам нужно изменить переменную среды JAVA_HOME в новое местоположение JDK 1.7.

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

Ответ 5

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

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

Я вытягивал свои волосы, пока не нашел этот сайт, который рекомендует установить "доморощенный" и следовать инструкциям на этой странице: 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:/usr/local/Cellar/maven/3.1.1/libexec Версия Java: 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", family: "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/libexec Версия Java: 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", family: "mac"

Ответ 6

Причина, по которой Maven по-прежнему использует Java 6, заключается в том, что запущенный в нее /usr/bin/mvn script не использует правильный метод OS/X для разрешения текущей версии Java, как указано в настройках Java. Для получения дополнительной информации см. Эту проблему Maven:

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

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

Ответ 7

Хорошо на моей машине. Да, установщик 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 на самом деле является симовой ссылкой, все еще указывающей на 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

Ответ 8

Я думаю, что проблема частично связана с механизмом запуска 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 Preferences это, похоже, не влияет на запуск .app java файлов. Однако это делает "java -version" из терминала приятным. Я попытался снять флажок, кроме опции Java7, а затем Eclipse не запускался вообще.

Ответ 9

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

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