簡體   English   中英

mvn -version錯誤:我們無法執行/ usr / libexec / java_home / bin / java

[英]mvn -version error: We cannot execute /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)
                 ⬆︎
          

這告訴shell“此表達式的值是執行以下命令的輸出( /usr/libexec/java_home) )”

運行該命令為mac提供了正確的java主目錄(如果安裝了單個JDK),並且該值放在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)

請訪問此鏈接: 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)。

就我而言,我在〜/ .bash_profile中有兩個JAVA_HOME條目,最后一個條件優先。 我剛剛刪除了一個錯誤的並且有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM