未正确定义JAVA_HOME编译时出错

我正在使用一些java类在cocoa中开发一个应用程序。我收到错误“JAVA_HOME未正确定义我们无法执行/System/Library/Frameworks/JavaVM.framework/Home/bin/java”.I不知道如何解决这个..请任何人帮助我..

提前致谢

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

实际上,硬编码/System/Library/Frameworks/JavaVM.framework/Versions / …的所有Apache项目(以及任何项目)都需要使用/ usr / libexec / java_home(如果存在)。 这是您了解Java是否实际安装的唯一方法。

在将来的某个时候,/ System / Library / Frameworks / JavaVM.framework / Version /中的符号链接将会消失,如果他们想要使用Oracle / OpenJDK JVM加载,这将更严重地破坏这些项目。

JAVA_HOME为指向.../Home目录,而不是java二进制文件。 例如

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

为什么要首先设置环境变量? 您不应该在OS X上执行此操作…

在.bashrc文件中,添加以下行:

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

这对我有用。

~/.mavenrc添加到~/.mavenrc文件中

 export JAVA_HOME=$(/usr/libexec/java_home) 

参考: Maven在OSX上忽略了JAVA_HOME?

有时候改变Java_HOME没有用,因为在apache ant脚本中java_home是硬编码的。 如果更改JAVA_HOME仍然无法运行ant,您可以尝试在ant脚本中将默认硬编码更改为JAVA_HOME,如:

  $ 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