2010-01-27 173 views
5

我正在開發一個使用java類的cocoa應用程序。我得到一個錯誤「JAVA_HOME沒有正確定義我們無法執行/System/Library/Frameworks/JavaVM.framework/Home /bin/java".I不知道如何解決this..Please任何人幫助我..提前JAVA_HOME定義錯誤編譯時出錯

回答

2

設置JAVA_HOME指向.../Home目錄,而不是java二進制

感謝。例如。

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home 

爲什麼在第一個地方設置環境變量?你不應該做這在OS X ...

+0

這是必要的,例如,在運行Ant生成腳本時。 – 2016-04-06 13:14:47

20
export JAVA_HOME=`/usr/libexec/java_home` is exactly what you want to do. 

事實上,所有的Apache項目的(當然,任何一個項目真的)是硬編碼/System/Library/Frameworks/JavaVM.framework/Versions/...如果存在,則需要使用/ usr/libexec/java_home。這是您知道Java是否實際安裝的唯一方法。

在將來某個時候,/ System/Library/Frameworks/JavaVactory.framework/Versions /中的符號鏈接將會消失,如果他們想要使用Oracle/OpenJDK JVM加載,這將更加嚴重地破壞這些項目。

+0

非常感謝:)你有沒有機會知道爲什麼不能使用雙/直引號? – pasql 2014-10-18 16:05:54

+0

這會在重新啓動之間持續嗎? – 2016-04-06 13:13:30

0

在你的.bashrc文件,添加如下行:

export JAVA_HOME=/usr 
export PATH=$PATH:$JAVA_HOME 

這爲我工作。

0

有些時候改變JAVA_HOME沒有幫助,因爲在Apache Ant的腳本JAVA_HOME是硬編碼。 如果當您更改JAVA_HOME依然未能運行ant,你可以嘗試將默認硬編碼更改爲JAVA_HOME在ant腳本,如:

$ vi /Users/apache-ant-1.8.3/bin/ant 
    #ant from line 83 to 93 
    case "`uname`" in 
     CYGWIN*) cygwin=true ;; 
     Darwin*) darwin=true 
       if [ -z "$JAVA_HOME" ] ; then 
#delete JAVA_HOME=XXXXX(default line) , and give JAVA_HOME ur java home url  




JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home 
          fi 
          ;; 
        MINGW*) mingw=true ;; 
       esac