2012-09-25 48 views
4

我遇到了Apache的Buildr問題,抱怨源代碼版本無效。每當我嘗試構建我的項目時,都會收到以下錯誤消息;Buildr抱怨javac:無效源版本:1.7

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(山獅),並從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 

回答

6

我看了看這個,它看起來像某種與OSX上的RJB工作方式有關的bug。 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 
+0

謝謝!順便說一下,這也適用於1.4.6。 – Soulman

+0

@彼得唐納德,我實際上得到了同樣的錯誤,我上面報告升級到1.4.9的建設者。沒有嘗試任何解決方法。 –

1

這與其說是一個答案,因爲它是一個變通。我得到了構建工作,但只有在我安裝並使用JRuby而不是Ruby之後(CRuby?我更像是一個Python傢伙)。

從我的研究看來,1.7 JVM似乎在Mac OS X下引發了很多問題。Eclipse似乎遇到了一個非常類似的問題,即平臺不會開始使用Java首選項和JAVA_HOME中特定的JVM。希望在某些時候這些問題將得到解決,但現在看來JRuby似乎是一個很好的解決方法。

TLDR;使用JRuby。

1

這看起來像一個Buildr問題。從歷史上看,我們使用預定路徑在Mac上檢測到Java主文件夾。我想它覆蓋JAVA_HOME。這將是很好的測試。

如果您在Buildr bug跟蹤系統上發出錯誤,我們可以查看它。

+0

完成,https://issues.apache.org/ jira/browse/BUILDR-655 –