未正确定义JAVA_HOME编译时出错

时间:2010-01-27 09:29:48

标签: java cocoa macos

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

提前致谢

6 个答案:

答案 0 :(得分:22)

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/Versions/中的符号链接将会消失,如果他们想要使用Oracle / OpenJDK JVM加载,这将更严重地破坏这些项目。

答案 1 :(得分:2)

JAVA_HOME设置为指向.../Home目录,而不是java二进制文件。 E.g。

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

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

答案 2 :(得分:1)

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

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

这对我有用。

答案 3 :(得分:0)

将以下行添加到~/.mavenrc文件

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

参考:Maven ignoring JAVA_HOME on OSX?

答案 4 :(得分:0)

有时候更改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

答案 5 :(得分:0)

由于jenv配置错误(如果已安装),也会发生这种情况。

~/.bash_profile中,应该有以下3行:

export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
eval "$(jenv enable-plugin export)"

然后通过以下方式重新加载它:source ~/.bash_profile