我遇到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
答案 0 :(得分:6)
我看了一下这看起来是一个与OSX上的RJB工作方式有关的错误。 RJB是Buildr用于与JVM交互的库。基本上RJB似乎不允许配置JVM而不设置一些环境变量(可能在构建时?)。见http://rjb.rubyforge.org/。
有两种主要方法可以解决这个问题;
我将研究在下一个版本(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错误跟踪系统上提交错误,我们可以查看它。