mac上java-version错误_关于macos:mvn -version错误:我们无法执行/ usr / libexec / java_home / bin / java...

======

编辑2:

我在编辑1中使用了与下面提到的相同的代码,我的错误显然不在代码本身,而是由于源?/ .bash_profile未按预期更新我的文件。不过我想(谢谢你@eckes)请看maven bug :( BTW:jira.codehaus.org/browse/MNG-5686 - eckes 39秒前)

编辑1:这不是重复:我应该在OSX上设置JAVA_HOME

我已经尝试了上面提到的所有解决方案,但它们对我不起作用。我的问题是我正在做其中列出的解决方案之一(我尝试了其他解决方案)。我仍然得到错误。

我正按照上述说明尝试:

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(Mac OS X上的Maven Install)

我安装了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我相信的。但它似乎可能是一个修复。

新mac上没有bash_profile(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是文件所在的位置。我的文件系统中没有"/ usr / libexec / java_home / bin / java"作为maven错误。

有没有其他人遇到过这个新的java 8,并且brew安装了maven?我正在使用运行Yosemite的MacBook Pro(Retina,13英寸,2014年中)。我以前安装过这样的设置,但从未遇到过这个问题。

**注意:

我发现了这个:http://www.mkyong.com/java/maven-java_home-is-not-defined-correctly-on-mac-osx/

我认为这肯定是我的修复。如果我错了,请纠正我,但我相信差异是括号。

例如:

export JAVA_HOME=/usr/libexec/java_home

VS

export JAVA_HOME=(/usr/libexec/java_home)

但是我的错误还没有解决。 (也是为了以防万一有人在重新运行之前要求我(它)来源。)但它确实改变了我的错误。它删除了额外的/ 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中插入了空格吗?你能打开终端窗口并执行echo $JAVA_HOME,然后告诉我们结果吗?

echo $ JAVA_HOME / usr / libexec / java_home。没有空间。这是JAVA_HOME =(/ usr /.../ java_home)

我想在你的源代码中丢失了反引号shell语法(用命令输出替换值)。 $()是替代语法:JAVA_HOME=`java_home`

@eckes等了抱歉你能解释一下吗?我把它切换到$()但仍然无法正常工作?

两者都是对的。您只需要确保在当前会话中运行该命令并将其导出。您的错误消息显示mvn stil lsees旧值。但是对于一个开始,只需将其设置为固定字符串并尝试它。如果这不起作用,则会出现另一个问题(例如,mvn脚本被修改或类似)。

@eckes我运行源?/ .bash_profile,然后我尝试mvn -version而我仍然得到:JAVA_HOME没有正确定义。我们无法执行/ usr / libexec / java_home / bin / java。这是使用正确的$()语法

然后检查?/ .mavenrc或/ etc / mavenrc是否覆盖变量。您还可以使用MAVEN_SKIP_RC=true mvn -v(一行)来验证它是否是其中一个文件。

我跑了一行:MAVEN_SKIP_RC = true mvn -v错误:未正确定义JAVA_HOME。我们不能执行/ usr / libexec / java_home / bin / java而且?/ .mavenrc还不存在作为文件

然后你可以运行bash -x mvn - 它将打印很多东西(每行命令以+开头一行)但你应该看到如何用错误的值分配JAVA_HOME。

... +'[' - x / usr / libexec / java_home / jre / sh / java']'+ JAVACMD = / usr / libexec / java_home / bin / java +'[''!' -x / usr / libexec / java_home / bin / java']'+ echo'错误:未正确定义JAVA_HOME。错误:未正确定义JAVA_HOME。 + echo'我们无法执行/ usr / libexec / java_home / bin / java'我们无法执行/ usr / libexec / java_home / bin / java + exit 1

我会怀疑这里有疑问。它看起来像副本中的解决方案将适合您。仔细检查您的权限;确保你可以实际执行二进制文件。

实际上mvn脚本中有一个错误,它也需要使用$()。但是如果以前正确设置了JAVA_HOME,它就不应该到达那一行。无论如何,将该脚本中的JAVA_HOME=/usr/libexec/java_home更改为$()版本,它应该可以工作

@Makoto嘿,谢谢怀疑的好处。我在另一页上阅读了解决方案。它不适合我。这是一台新的计算机,可能是错误的检查权限。奇怪的

@eckes嗯好等我的bash_profile是:export JAVA_HOME = $(/ usr / libexec / java_home)这是正确的吗?您希望我将哪个脚本更改为$()格式?

@eckes OH,有趣。所以我正在运行source~ / .bash_profile,因为我认为这会刷新文件/位置。我打开另一个窗口,它开始运行。我相信我遇到的错误是该来源......没有像我预期的那样更新文件。新窗口运行正常。非常感谢你的帮助。我的解决方案是创建一个新的终端页面。源....的任何原因不起作用?

@Makoto你是正确的,所需的代码是重复的。我不确定为什么我有上述问题源?/ .bash_profile没有更新并允许文件运行。我不得不重启open terminal。随意删除。抱歉!

BTW:jira.codehaus.org/browse/MNG-5686

@eckes哇,谢谢!

你错过了一件小事,我相信:

export JAVA_HOME=$(/usr/libexec/java_home)

??

This dollar sign

这告诉shell"此表达式的值是执行以下命令(/usr/libexec/java_home))的输出"

运行该命令为mac提供了正确的java主目录(如果安装了单个JDK),并且该值放在JAVA_HOME中。没有美元符号,它只是将命令的名称放在那里。

哦,真棒。 我修好了。 我现在得到echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home,但maven仍未运行:mvn -version错误:JAVA_HOME未正确定义。 我们无法执行/ usr / libexec / java_home / bin / java

你有出口吗? 或者你是否真的再次登录(或来源.bashrc)。

我来源?/ .bash_profile,

你在不同的选项卡或终端窗口中运行mvn吗?

我欠你一盒糖果。

我太蠢了!

我在.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)

就我而言,我在?/ .bash_profile中有两个JAVA_HOME条目,最后一个条件优先。我刚刚删除了一个错误的并且有效。

请点击此链接: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)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值