Buildr抱怨javac:源代码无效:1.7

时间:2012-09-25 16:21:35

标签: macos build javac openjdk buildr

我遇到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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这不是一个答案,因为它是一个解决方案。我的构建工作正常,但只有在我安装并使用JRuby而不是Ruby之后(CRuby?我更像是一个Python人员。)

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

TLDR;使用JRuby。

答案 2 :(得分:1)

这看起来像Buildr问题。从历史上看,我们使用预定路径在Mac上检测Java主文件夹。我想它会覆盖JAVA_HOME。测试一下会很好。

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