Після установки Java JDK 7 для Mac OS X - mvn -version все ще показує java версії 1.6.0_31


117

26 квітня Oracle випустив Java JDK 7 для 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?

Дякую за допомогу.

Відповіді:


126

Нарешті знайшов відповідь тут:

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


4
Нещодавно я встановив Java 6, і я не в змозі знайти JavaPreferences.app bcz mac, зараз не підтримує Java. Можна сказати мені, як я можу встановити свій jvm без використання JavaPreferences.
amod

2
Ви можете прийняти власну відповідь. Це покаже всім решті нас, що це вирішило цю проблему. І у вас буде ще 10 понтів :)
Іболіт

5
Я додав до ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren

1
Або ви можете зробити "експортувати JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)" одним знімком замість того, щоб змінити за допомогою Java Preferences.app
mac

не вдалося відкрити програму Java Preferences в Ель-Каптіані, я пішов із System Preferences -> Java.
Wolf7176

34

Проблема полягає в тому, що символічне посилання "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


переконайтеся, що ви вказали правильну версію для jdk1.7.0_45.jdk, моя булаjdk1.7.0_51.jdk
ndequeker

1
Цікаво, чому розробники Oracle не робили це автоматично? Для мене це не банально. Ця відповідь врятувала мені день.
Іван Ворошилін

це не працює для мене. Я на ель-каптіані. версія mvn java відмовляється змінюватися. JAVA_HOME точний
Wolf7176

17

Щоб знайти шлях з налаштувань 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>

6
grrrrr, я це зробив, і шлях, який він перераховує для мого jdk1.7, взагалі не існує :(
Дін Гіллер

9

Вам потрібно змінити JAVA_HOMEзмінну середовища на нове місце JDK 1.7.

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


Ви впевнені, що мені це потрібно на Mac OS X? Мені раніше не доводилося цього робити. Якщо мені потрібно встановити JAVA_HOME, як я можу знати, який шлях використовувати під час встановлення Java JDK 7, не дав мені ніякої інформації про шлях встановлення, і програма додатка Java Preference на Mac не показує шлях до JDK 1.7
Брюс Філліпс

Якщо ви подивитесь на своє запитання вище, ви можете побачити, що JAVA_HOME вже визначений і в даний час вказує на старий 1.6 JDK. Я не знайомий із тим, як змінювати змінні середовища в OSX, але це те, що Maven використовує за замовчуванням.
Нейт

Проблема полягає в тому, що оновлення Apple зазвичай оновлює версію java та встановлює значення JAVA_HOME. Встановлення значення JAVA_HOME у .bashrc не працює в OS X, як у Linux. Також ніде я не можу знайти шлях до встановленого Oracle JDK 7.
Брюс Філліпс

Також Nate моє запитання НЕ дублікат публікації, з якою ви пов’язані. Я перебуваю на OS X і оновив до Java JDK 7 за допомогою установки Oracle для Mac OS X, яка щойно була випущена 26 квітня.
Брюс Філліпс,

Жоден Mac замість .bashrc не використовує .bash_profile, і ви зможете знайти інсталяцію в розділі / Система / Бібліотека / Java / JavaVirtualMachines /, де вам потрібно вказати на нову версію Java 1.7.0
peter_budo

7

У випадку, якщо хтось встановлює 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 home: /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 / Зміст / Головна / jre За замовчуванням локаль: en_US, кодування платформи: UTF-8 Назва ОС: "mac os x", версія: "10.9", арка: "x86_64", сім'я: "mac"

Успіху! але зачекайте ... наступного разу я відкрив термінал і запустив mvn -v, він повернувся до версії java 1.6. WTH!

його якась передбачувана помилка з того, що я читаю, використовую: echo JAVA_HOME = /usr/libexec/java_home -v 1.7| sudo tee -a / тощо / mavenrc

а зараз:

Maven home: /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", арка: "x86_64", сім'я: "mac"


export JAVA_HOME=`/usr/libexec/java_home`добре працював для мене, щоб отримати гарний експорт JAVA_HOME var.
cdeszaq

4

Причина, що Maven все ще використовує Java 6, полягає в тому, що сценарій / usr / bin / mvn, який її запускає, не використовує правильний метод OS / X для вирішення поточної версії Java, як зазначено в налаштуваннях Java. Докладніше див. У цьому випуску Maven:

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

Голосування за нього може виправити; тим часом, якщо ви зміните сценарій / usr / bin / mvn, як показано в коментарях та виправленнях із цього питання, ви отримаєте бажаний результат.


2

Гаразд на моїй машині. Так, інсталятор 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)

але ДОМАШНЯ СДК - це насправді симпосилання, яке все ще вказує на 1.6

/Library/Java/Home в пошуку FindInfo вказує на /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


0

Я думаю, проблема частково полягає в механізмі запуску Java. Мені вдалося отримати Eclipse для запуску свого коду під Java7, але я думаю, що саме затемнення все ще працює під 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», схоже, це не впливає на запуск файлів .app Java. Однак це робить java-перетворення з терміналу добре. Я спробував зняти галочку з усього, крім параметра Java7, і тоді Eclipse взагалі не запустився.


0

Якщо ваш JAVA_HOME розташований у локальному баші користувача, mvn вибере поточну версію Java-системи, незалежно від того, який JAVA_HOME ви встановили.

Отже, спочатку запустіть команду ' that mvn ' і перевірте, який виконуваний mvn ви використовуєте. Після цього відредагуйте цей файл mvn та змініть змінну JAVA_HOME у вибраний вами будинок Java.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.