有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

macos mvn版本错误:我们无法执行/usr/libexec/java_home/bin/java

====== 编辑2:

我在编辑1中使用了与下面提到的相同的代码,我的错误显然不在代码本身,而是源代码~/。bash_配置文件未按预期更新我的文件。不过,我想(谢谢@eckes)请看看maven的bug:(顺便说一句:jira.codehaus.org/browse/MNG-5686–39秒前的eckes)

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

然而,我相信这是基于Java7的。但这似乎是一个解决办法

新mac(https://apple.stackexchange.com/questions/26928/no-bash-profile-in-os-x-lion)上没有bash_配置文件

因此,我创建并编辑了我的bash_配置文件:

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中遇到过这种情况?我正在使用运行约塞米蒂的MacBookPro(视网膜,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_主页:

 echo $JAVA_HOME
      /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home

**注意:我尝试了$()语法,但没有解决问题


共 (4) 个答案

  1. # 1 楼答案

    我在上面写字。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. # 2 楼答案

    点击以下链接: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
    

    第三步:这是因为没有设置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。侧面图

    发布命令并按Ctrl-x Ctrl-c(保存缓冲区终止终端)

  3. # 3 楼答案

    在我的例子中,我的~/中有两个JAVA_HOME条目。bash_简介,最后一份优先。我刚刚删除了一个错误的,它成功了

  4. # 4 楼答案

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

    export JAVA_HOME=$(/usr/libexec/java_home)
                     ⬆︎
              This dollar sign

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

    运行该命令可以为mac提供适当的java home(如果您安装了一个JDK),并且该值被放置在java_home中。没有美元符号,它只是把命令的名字放在那里