java - mvn -版本错误 : We cannot execute/usr/libexec/java_home/bin/java

标签 java macos maven bash

====== 编辑 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

我已经尝试了上面帖子中提到的所有解决方案,但它们都不适合我。我的问题是我正在执行此处列出的解决方案之一(我尝试了其他解决方案)。我仍然收到错误。

我目前正在按照上述说明尝试:

  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 的。但这似乎是一个解决办法。

新 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 是文件所在的位置。由于 maven 出错,我的文件系统中没有“/usr/libexec/java_home/bin/java”。

有没有其他人在新的 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

对比

 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)
                 ⬆︎
          This dollar sign

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

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

关于java - mvn -版本错误 : We cannot execute/usr/libexec/java_home/bin/java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28078194/

相关文章:

java - 如何解释这个运算符结合性?

java - Thread.sleep() 到 Swing 定时器的转换

macos - 我的新 Controller 的父类(super class)应该是什么?

java - 如何构建一个构建插件依赖项的项目?

java - 多模块项目的 Maven 依赖范围

java - 使用beeline或java jdbc代码时,配置单元抛出错误

java - 如何在二叉搜索树中找到最大对象

xcode - 什么会导致彩色 mac 应用程序图标显示为灰度?

python - 可以使用 cx_freeze 在 mac os x 中卡住 python3.1 脚本吗?

java - 使用maven构建时无法读取子包