![](/img/trans.png)
[英]How do I fix Error: JAVA_HOME is not defined correctly. We cannot execute /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.