2010-01-27 147 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