7

Buildr で Scala 2.8 プロジェクトをコンパイルするのに苦労しており、誰かがすでにこれを理解していることを期待していました。

現在、次のようなビルドファイルを含む標準の HelloWorld アプリケーションがあります。

ENV['JAVA_HOME'] = 'C:\Program Files (x86)\Java\jdk1.6.0_17'
ENV['SCALA_HOME'] = 'C:\scala-2.8.0.Beta1-RC6'

define "HelloWorld" do

  #artifact_ns['Buildr::Compiler::Scalac'].library = '2.8.0'
  require 'buildr/scala'

  puts Scala.version

end

buildr を実行すると、次の出力が得られます。

(C:/Users/Travis/eclipse_ws/HelloWorld、開発中)
2.7.5 HelloWorld の
構築 HelloWorld
を C:/Users/Travis/eclipse_ws/HelloWorld/target/classes に
コンパイル中
←[31mScala コンパイラがクラッシュしました:
#←[0m

最初の問題は NoClassDefFoundError です。これは scala コンパイラのメイン クラスを見つけることができません。2 つ目の問題は、Scala.version が 2.7.5 を出力していることです。SCALA_HOME パスが 2.8 リリースを指しているため、これは正しくありません。

最後に、 --trace フラグを使用すると、Buildr がある程度正しい scalac コマンドを生成し、そのコマンドを手動で実行するとすべてがコンパイルされることがわかります。一部の cp エントリが重複しているため、ある程度正しいと言えます。以下を参照してください。

scalac -classpath C:/scala-2.8.0.Beta1-RC6/lib/scala-library.jar;C:/scala-2.8.0.Beta1-RC6/lib/scala-compiler.jar;C:/scala- 2.8.0.Beta1-RC6/lib/scala-library.jar;C:/scala-2.8.0.Beta1-RC6/lib/scala-compiler.jar -ソースパス C:/Users/Travis/eclipse_ws/HelloWorld/src /main/scala -d C:/Users/Travis/eclipse_ws/HelloWorld/target/classes -verbose -g C:/Users/Travis/eclipse_ws/HelloWorld/src/main/scala/hw/HelloWorld.scala

私が試したもう1つのこと(ただし、ビルダーでエラーが発生しました)は、次の設定でした(これは、SCALA_HOMEの存在で必要ではないと思いました):

#artifact_ns['Buildr::Compiler::Scalac'].library = '2.8.0'

アイデアはありますか?

ここに私のシステム情報の簡単なリストがあります: Win 7 64 ビット JDK 6 32 ビットは buildr 用にローカルに設定されますが、JDK 6 64 ビットはシステム全体に設定されます Ruby 1.8.6 32 ビット Buildr 1.3.5 32 ビット Scala 2.8.0.Beta1-RC6

私が考えているもう 1 つのことは、32 ビット JDK を再インストールし、名前に (x86) を含むディレクトリから取得することです。これが現在の問題に関連しているかどうかはわかりませんが、Scala のバット ファイルに問題があることがわかりました。

前もって感謝します!

4

3 に答える 3

3

理解した。愚かな問題。Buildr では (または Ruby ではもっと一般的に?)、require メソッドの呼び出しはファイルの先頭にある必要があります (少なくとも定義ブロック内ではありません)。

「buildr/scala」が必要

したがって、NoClassDefFoundError と puts Scala.version によって表示される誤ったバージョンの両方が、これによって修正されました。以下は、私のスクリプトがどのように見えるべきかです:

require 'buildr/scala'

ENV['JAVA_HOME'] = 'C:\Program Files (x86)\Java\jdk1.6.0_17'
ENV['SCALA_HOME'] = 'C:\scala-2.8.0.Beta1-RC6'

define 'HelloWorld' do

  puts Scala.version

end

ところで:あなたが何をしているのかを理解すると、Buildrはかなり甘いようです(高速、簡潔、設定上の規則など):-)

于 2009-12-31T02:08:33.227 に答える
2

バージョン1.4では、現時点でできること

Buildr.settings.build['scala.version'] = "2.8.0"
require 'buildr/scala'

また、scala 2.8 を使用します。

于 2010-09-15T23:12:41.753 に答える
1

Buildr 1.4 は Scala 2.8 をサポートしており、1.4.2 はデフォルトで 2.8 を使用します。

于 2010-08-01T11:38:30.683 に答える