Buildr抱怨javac:无效的源发布:1.7。

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中的系统版本(版本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个回答

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

@Peter Donald,我在升级到buildr 1.4.9后遇到了与之前报告的相同的错误。我还没有尝试任何解决方法。 - James McMahon

1

这不是一个答案,而是一个解决方法。我成功地构建了它,但只有在安装和使用JRuby而不是Ruby(CRuby?我更喜欢Python)之后才成功。

从我的研究来看,在Mac OS X下,1.7 JVM会引起很多问题。Eclipse似乎也遇到了非常类似的问题,平台无法使用Java Preferences和JAVA_HOME中指定的JVM启动。希望这些问题在某个时候能够得到解决,但现在似乎JRuby是一个不错的解决方法。

简而言之,请使用JRuby。


1

这似乎是一个Buildr问题。历史上,我们使用预定路径在Mac上检测Java主文件夹。我猜它会覆盖JAVA_HOME。最好测试一下。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接