mvn -version error: We cannot execute /usr/libexec/java_home/bin/java
mvn -version error: We cannot execute /usr/libexec/java_home/bin/java
======
编辑 2:
我在编辑 1 中使用了与下面提到的相同的代码,我的错误显然不在代码本身,而是由于 source ~/.bash_profile 没有按预期更新我的文件。不过,我认为(谢谢@eckes)请查看 Maven 错误:(顺便说一句:jira.codehaus。org/browse/MNG-5686 – eckes 39 秒前)
编辑 1:这不是以下内容的副本:What should I set JAVA_HOME to on OSX
我已经尝试了上面提到的所有解决方案post,但它们都不适合我。我的问题是我正在执行此处列出的解决方案之一(我尝试了其他解决方案)。我仍然收到错误。
我目前正在按照上述说明尝试:
export JAVA_HOME=$(/usr/libexec/java_home)
并获得:
source ~/.bash_profile
mvn -version
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/libexec/java_home/bin/java
=======
我从 oracle
安装了最新的 java jdk
java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
我安装了 Xcode 来安装 maven 但是最近的文档指出我可以使用 brew (Maven Install on Mac OS X)
我安装了 maven:
//install brew
brew doctor
brew install maven
然后我尝试了:
mvn -version
Error: JAVA_HOME is not defined correctly.
我发现:http://hathaway.cc/post/69201163472/how-to-edit-your-path-environment-variables-on-mac
然而这是基于java 7 我相信。但这似乎是一个解决办法。
没有bash_profile新mac(https://apple.stackexchange.com/questions/26928/no-bash-profile-in-os-x-lion)
所以我创建并编辑了我的bash_profile:
touch ~/.bash_profile
vim ~/.bash_profile
//and added the line export JAVA_HOME=(/usr/libexec/java_home)
我的问题是,即使进行了此修复,我仍然收到以下错误:
mvn -version
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/libexec/java_home/bin/java
但是我检查了我的文件系统中 java_home 是文件所在的位置。由于 maven 出错,我的文件系统中没有“/usr/libexec/java_home/bin/java”。
有没有其他人在新 java 8 和 brew 安装 maven 时遇到过这个问题?我使用的是 MacBook Pro(Retina,13 英寸,2014 年中)运行 Yosemite。我以前安装过这样的设置,但从未遇到过这个问题。
**注:
我发现了这个:http://www.mkyong.com/java/maven-java_home-is-not-defined-correctly-on-mac-osx/
我认为这绝对是我的解决办法。如果我错了,请纠正我,但我相信区别在于括号。
例如:
export JAVA_HOME=/usr/libexec/java_home
对
export JAVA_HOME=(/usr/libexec/java_home)
但是我的错误还没有解决。 (也以防万一有人问我在 re运行 之前获取(编辑)它。)但是它确实改变了我的错误。它删除了额外的 /bin/java.
mvn -version
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/libexec/java_home/bin/java
JAVA_HOME:
echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
**注意我尝试了 $() 语法,但这并没有解决问题。
你错过了一件小事,我相信:
export JAVA_HOME=$(/usr/libexec/java_home)
⬆︎
This dollar sign
这告诉 shell "The value of this expression is the output from executing the following command (/usr/libexec/java_home)
)"
运行 该命令为 mac 提供了正确的 java 主页(如果您安装了单个 JDK),并且该值放置在 JAVA_HOME。没有美元符号,它只是将命令的名称放在那里。
关注这个link:
如果您看到 mvn 脚本: The code fails here ---
调试和修复步骤:
第一步:打开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
post 命令并按 Ctrl-x Ctrl-c ( save-buffers-kill-terminal )。
在我的例子中,我的 ~/.bash_profile 中有两个 JAVA_HOME 条目,最后一个优先。我刚刚删除了错误的那个并且它起作用了。
我在 .bash_profile 上写这些行然后为我工作。
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=/Users/(YOUR USER)/Documents/apache-maven-3.0.3/bin:$PATH
export PATH=$JAVA_HOME/jre/bin:$PATH
注意:在 macOS Sierra (10.12.6) 上工作
====== 编辑 2:
我在编辑 1 中使用了与下面提到的相同的代码,我的错误显然不在代码本身,而是由于 source ~/.bash_profile 没有按预期更新我的文件。不过,我认为(谢谢@eckes)请查看 Maven 错误:(顺便说一句:jira.codehaus。org/browse/MNG-5686 – eckes 39 秒前)
编辑 1:这不是以下内容的副本:What should I set JAVA_HOME to on OSX
我已经尝试了上面提到的所有解决方案post,但它们都不适合我。我的问题是我正在执行此处列出的解决方案之一(我尝试了其他解决方案)。我仍然收到错误。
我目前正在按照上述说明尝试:
export JAVA_HOME=$(/usr/libexec/java_home)
并获得:
source ~/.bash_profile
mvn -version
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/libexec/java_home/bin/java
======= 我从 oracle
安装了最新的 java jdkjava -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
我安装了 Xcode 来安装 maven 但是最近的文档指出我可以使用 brew (Maven Install on Mac OS X)
我安装了 maven:
//install brew
brew doctor
brew install maven
然后我尝试了:
mvn -version
Error: JAVA_HOME is not defined correctly.
我发现:http://hathaway.cc/post/69201163472/how-to-edit-your-path-environment-variables-on-mac
然而这是基于java 7 我相信。但这似乎是一个解决办法。
没有bash_profile新mac(https://apple.stackexchange.com/questions/26928/no-bash-profile-in-os-x-lion)
所以我创建并编辑了我的bash_profile:
touch ~/.bash_profile
vim ~/.bash_profile
//and added the line export JAVA_HOME=(/usr/libexec/java_home)
我的问题是,即使进行了此修复,我仍然收到以下错误:
mvn -version
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/libexec/java_home/bin/java
但是我检查了我的文件系统中 java_home 是文件所在的位置。由于 maven 出错,我的文件系统中没有“/usr/libexec/java_home/bin/java”。
有没有其他人在新 java 8 和 brew 安装 maven 时遇到过这个问题?我使用的是 MacBook Pro(Retina,13 英寸,2014 年中)运行 Yosemite。我以前安装过这样的设置,但从未遇到过这个问题。
**注:
我发现了这个:http://www.mkyong.com/java/maven-java_home-is-not-defined-correctly-on-mac-osx/
我认为这绝对是我的解决办法。如果我错了,请纠正我,但我相信区别在于括号。
例如:
export JAVA_HOME=/usr/libexec/java_home
对
export JAVA_HOME=(/usr/libexec/java_home)
但是我的错误还没有解决。 (也以防万一有人问我在 re运行 之前获取(编辑)它。)但是它确实改变了我的错误。它删除了额外的 /bin/java.
mvn -version
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/libexec/java_home/bin/java
JAVA_HOME:
echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
**注意我尝试了 $() 语法,但这并没有解决问题。
你错过了一件小事,我相信:
export JAVA_HOME=$(/usr/libexec/java_home) ⬆︎ This dollar sign
这告诉 shell "The value of this expression is the output from executing the following command (/usr/libexec/java_home)
)"
运行 该命令为 mac 提供了正确的 java 主页(如果您安装了单个 JDK),并且该值放置在 JAVA_HOME。没有美元符号,它只是将命令的名称放在那里。
关注这个link: 如果您看到 mvn 脚本: The code fails here ---
调试和修复步骤:
第一步:打开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
post 命令并按 Ctrl-x Ctrl-c ( save-buffers-kill-terminal )。
在我的例子中,我的 ~/.bash_profile 中有两个 JAVA_HOME 条目,最后一个优先。我刚刚删除了错误的那个并且它起作用了。
我在 .bash_profile 上写这些行然后为我工作。
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=/Users/(YOUR USER)/Documents/apache-maven-3.0.3/bin:$PATH
export PATH=$JAVA_HOME/jre/bin:$PATH
注意:在 macOS Sierra (10.12.6) 上工作