Maven构建时OSX-10.8.4版本出现JAVA_HOME错误


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_HOMEls -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 ..我看到没有从bashrc文件中检索到Java路径。当我仅从终端分别设置JAVA_HOME时,便可以构建一个项目。为什么会这样发生?任何的想法 ?
arvind406

Answers:


9

苹果建议将JAVA_HOME设置为“ / usr / libexec / java_home”。

对我有用的是将它包装在$()周围。因此,我最终使用以下命令像$(/ usr / libexec / java_home)一样配置了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 如果存在,则为Apple提供的Java,其最新版本为JRE 1.6。

要使用Oracle JDK(您提到的Java 7),请使用/ usr / bin / java路径(如果已完全安装)。请注意,JRE仅用于Java applet,因此不会影响/ usr / bin / java

有关更多信息,请参见Oracle安装文档。

并从那里记下

要运行其他版本的Java,请指定完整路径,或使用java_home工具:

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

有关更多信息,请参见java_home(1)手册页。


.profile-> export PATH = $ {JAVA_HOME} / bin:$ PATH export CATALINA_HOME = / Library / 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

单击此链接:https : //stackoverflow.com/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)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.