我在抱怨无效的源发行版的Apache Buildr遇到问题。每当我尝试构建项目时,都会收到以下错误消息;

javac: invalid source release: 1.7
Usage: javac <options> <source files>
use -help for a list of possible options
Buildr aborted!
RuntimeError : Failed to compile, see errors above

有人会假设我的系统上没有安装Java 7,但是当我执行javac -version时,我得到javac 1.7.0-u10-b08,这是我刚安装的OpenJDK。

这里发生了什么?我的第一个猜测是Buildr运行的Java版本错误,但我不知道如何解决或确认这一错误。

为了给这个问题提供一些背景知识,我正在运行Mac OS X版本8(Mountain Lion),并从http://code.google.com/p/openjdk-osx-build/安装了OpenJDK。我正在使用RVM来管理Ruby,并按照文档中的建议使用env JAVA_HOME=$JAVA_HOME gem install buildr安装了Buildr。我的JAVA_HOME设置为/Library/Java/JavaVirtualMachines/1.7.0u.jdk/Contents/Home,这是我安装OpenJDK的位置。

如果有人可以在这里帮助我,我将非常感激。

更新:
看起来Buildr确实不尊重我的JAVA_HOME。我进去并在Java偏好设置中未选中Java的系统版本(版本6),现在出现了另一个错误,
JavaVM: requested Java version ((null)) not available. Using Java at "" instead.
JavaVM: Failed to load JVM: /bundle/Libraries/libserver.dylib
JavaVM FATAL: Failed to load the jvm library.
Buildr aborted!
RuntimeError : can't create Java VM

最佳答案

我看了一下,似乎是与OSX上RJB的工作方式有关的错误。 RJB是Buildr用于与JVM交互的库。从本质上讲,RJB似乎不允许在未设置某些环境变量的情况下(可能是在构建时?)配置JVM。参见http://rjb.rubyforge.org/

解决此问题的方法主要有两种:

  • 通过在构建文件中添加“compile.using(:externaljavac)”之类的东西来使用外部编译器。
  • 使用JRuby。

  • 我将研究在下一版本(1.4.8)中正确解决此问题所需的条件。

    更新

    在1.4.8中已修复-1.4.7的解决方法是设置JVM_LIB环境变量,例如
    export JVM_LIB=$JAVA_HOME/jre/lib/server/libjvm.dylib
    

    10-01 18:39