Помилка JAVA_HOME під час збирання Maven, версія OSX-10.8.4


10
Error: JAVA_HOME is not defined correctly.
  We cannot execute
  /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java

Я оновив свій OSX до 10.8.4. Після оновлення OSX я модернізував JDK і JRE до 7. Але я отримую вищезгадану помилку, коли намагаюся створити проект Maven.

Коли я біжу ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

Я отримую нижче відповідь

drwxr-xr-x  11 root  wheel  374 Jul 22 22:33 .
drwxr-xr-x  10 root  wheel  340 Jul 22 18:30 ..
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6.0 -> CurrentJDK
drwxr-xr-x   7 root  wheel  238 Jul 22 18:30 A
lrwxr-xr-x   1 root  wheel    1 Jul 22 18:30 Current -> A
lrwxr-xr-x   1 root  wheel   59 Jul 22 18:30 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

Для цього ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Я більше не бачу вмісту в CurrentJDK.

На бігу /usr/libexec/java_home

Я отримав:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Я майже новачок у роботі з OS X. Повідомте мене, чи можу я пропустити якийсь момент, щоб зробити це успішним.


Ви можете запустити echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/binі ls -al /System/Library/Frameworks/JavaVM.framework/Versions/додати результат на питання?
nohillside

@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc і .profile в ньому зазначені вище команди ..
arvind406

@Patrix .. Я бачу, що шлях Java не витягується з файлу bashrc. Коли я встановив JAVA_HOME від терміналу окремо лише тоді, я міг створити проект. Чому це могло статися так? Будь-яка ідея?
arvind406

Відповіді:


9

Apple рекомендує встановити JAVA_HOME на "/ usr / libexec / java_home".

Що для мене спрацювало, це обернути навколо $ (). Отже я налаштував JAVA_HOME на зразок $ (/ usr / libexec / java_home) з такими командами:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile

Це працювало для мене чудово!
rdegges

2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java якщо вона існує, це Java, що постачається Apple, остання версія якої буде JRE 1.6.

Щоб використовувати JDK Oracle (Java 7, яку ви згадуєте), використовуйте шлях / usr / bin / java, якщо ви його встановили повністю. Зауважте, що JRE призначений лише для аплетів Java, тому він не впливає на / usr / bin / java

Для отримання додаткової інформації див. Документацію щодо встановлення Oracle

і примітка звідти

Щоб запустити іншу версію Java, або вкажіть повний шлях, або скористайтеся інструментом java_home:

/usr/libexec/java_home -v 1.7.0_06 --exec javac -version

Для отримання додаткової інформації дивіться сторінку чоловіка java_home (1).


.profile -> експортувати PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Бібліотека / Tomcat / Головна
arvind406

@arvind, що означають ці коментарі?
користувач151019

@ arvind406 так, але що це додає чи запитує про мою відповідь?
користувач151019

попередні коментарі коментувались у неправильному вікні. Вибачення. Після оновлення до 10.8 OSX я модернізував JDK та JRE до 7. Я ще раз оновив питання. ласкаво придивіться і дайте мені знати, чи я кудись помиляюся. Після виконання цієї команди /usr/libexec/java_homeя отримую/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
arvind406

@Mark .. Я бачу, що шлях не отриманий з файлу bashrc. Коли я встановив JAVA_HOME від терміналу окремо лише тоді, я міг створити проект. Чому це могло статися так? Будь-яка ідея?
arvind406

1

Перейдіть за цим посиланням: https://stackoverflow.com/a/44564303/5005676 Якщо ви бачите сценарій mvn: тут код не вдається ---

Кроки для налагодження та виправлення:

Крок 1: Відкрийте сценарій mvn /Users/Username/apache-maven-3.0.5/bin/mvn (Відкрийте за допомогою команди менше, наприклад: менше /Users/Username/apache-maven-3.0.5/bin/mvn)

Крок 2: Дізнайтеся наведений нижче код у сценарії:

  if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly."
  echo "  We cannot execute $JAVACMD"
  exit 1
fi

Етап: Це відбувається тому, що змінна JAVACMD не була встановлена. Так він відображає помилку.

Примітка. Щоб виправити це

export JAVACMD=Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

Ключ: Якщо ви хочете, щоб це був постійний відкритий emacs.profile

опублікуйте команди та натисніть Ctrl-x Ctrl-c (save-buffers-kill-terminal).

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