4

我遇到了 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 Preferences 中的 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
4

3 回答 3

6

我看了一下这个,它看起来是一个与 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
于 2012-09-26T22:06:53.053 回答
1

这与其说是一个答案,不如说是一种解决方法。我让构建工作,但只有在我安装并使用 JRuby 而不是 Ruby(CRuby?我更像是一个 Python 人)之后。

根据我的研究,1.7 JVM 似乎在 Mac OS X 下引起了很多问题。Eclipse 似乎遇到了一个非常类似的问题,即平台不会开始使用 Java Preferences 和 JAVA_HOME 中特定的 JVM。希望在某个时候这些问题会得到解决,但现在看来 JRuby 是一个很好的解决方法。

TLDR;使用 JRuby。

于 2012-09-25T19:31:50.620 回答
1

这看起来像一个构建器问题。从历史上看,我们使用预定路径检测 Mac 上的 Java 主文件夹。我猜它会覆盖 JAVA_HOME。对此进行测试会很好。

如果您在 Buildr 错误跟踪系统上提交错误,我们可以查看它。

于 2012-09-25T23:26:43.813 回答