Ошибка 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. Дайте мне знать, если бы я упустил какой-то момент в том, чтобы сделать его успешным.

arvind406
источник
Вы можете запустить echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/binи ls -al /System/Library/Frameworks/JavaVM.framework/Versions/добавить результат на вопрос?
холме
@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
HCPL
источник
Это сработало для меня отлично!
Предисловие
2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java если он существует - это Java, поставляемая Apple, последней из которых будет JRE 1.6.

Чтобы использовать Oracle JDK (упомянутую вами 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).

user151019
источник
.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Библиотека / Tomcat / Home
arvind406
@arvind, что означают эти комментарии?
user151019
@ arvind406 да, но что это добавляет или спрашивает о моем ответе?
user151019
предыдущие комментарии были прокомментированы в неправильном окне. Извиняюсь. После обновления до 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

Перейдите по этой ссылке: /programming//a/44564303/5005676 Если вы видите скрипт mvn: здесь код не работает ---

Шаги для отладки и исправления:

Шаг 1: Откройте скрипт mvn /Users/Username/apache-maven-3.0.5/bin/mvn (откройте с помощью команды less, например: less /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

Шаг 3: Это происходит потому, что переменная 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).

Шубхам Верма
источник