読者です 読者をやめる 読者になる 読者になる

Noopの最新バージョンをビルド=>失敗orz

世間ではGo言語が盛り上がっていますが、やっぱりJavaerな私としてはNoopが気になる。Noopがリリースされた直後にビルド環境を作ったのだが、ビルドできたワーイワーイという状態のまま放置してあったので、久しぶりにNoopのGoogle codeサイトを見に行くと、いろいろproposalが提出されていてかなり盛り上がっているようだ。コミットも頻繁にあるみたい。
ということで、最新のソースを取得して再びビルドしてみた。

準備

ちなみにビルド環境の整え方については以下のブログがすごく参考になる。
http://d.hatena.ne.jp/sh2/20090919
Java、TortoiseHG、Ruby、Buildr、ScalaあたりをインストールしてソースをとってくればOK。

最新のソースの取得

いまいちhgコマンドの使い方が分からなかったので、適当にやってみる。TortoiseHGのメニューから「view changelog」を選択してログビューを開いて、最新のリビジョンを右クリックして「update」とかやると、なんとなく最新版のソースになった。適当だなー。

ビルド

ビルドは単にnoopをチェックアウトしたディレクトリで「buildr」コマンドを実行するだけ・・なのだがRubyがなんかエラーを吐くので、rubyコマンドで直接buidlrを叩く。あれ、、なんかエラーがでるぞ。

C:\noop>ruby "c:\Program Files\ruby-1.8\lib\ruby\gems\1.8\gems\buildr-1.3.4\bin\buildr"

HelloWorld

c:\noop\coreやinterperter以下にnoopのコアライブラリやインタプリタやらが出来てるので、それらを使ってインタプリタを実行してみる。

C:\noop>scala -cp core\target\noop-core-0.1.0-SNAPSHOT.jar;interpreter\target\classes;antlr-runtime-3.1.1.jar;guice-2.0.
jar;aopalliance-1.0.jar noop.interpreter.InterpreterMain HelloWorld interpreter\target\resources\helloworld interpreter\
target\resources\stdlib
com.google.inject.CreationException: Guice creation errors:

1) No implementation for noop.types.BooleanFactory was bound.
  while locating noop.types.BooleanFactory
    for parameter 2 at noop.interpreter.InterpreterVisitor.<init>(InterpreterVisitor.scala:34)
  at noop.interpreter.InterpreterModule.getVisitor(InterpreterModule.scala:51)

2) No implementation for noop.types.IntegerFactory was bound.
  while locating noop.types.IntegerFactory
    for parameter 4 at noop.interpreter.InterpreterVisitor.<init>(InterpreterVisitor.scala:34)
  at noop.interpreter.InterpreterModule.getVisitor(InterpreterModule.scala:51)

3) No implementation for noop.types.StringFactory was bound.
  while locating noop.types.StringFactory
    for parameter 3 at noop.interpreter.InterpreterVisitor.<init>(InterpreterVisitor.scala:34)
  at noop.interpreter.InterpreterModule.getVisitor(InterpreterModule.scala:51)

3 errors
        at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:354)
        at com.google.inject.InjectorBuilder.initializeStatically(InjectorBuilder.java:152)
        at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:105)
        at com.google.inject.Guice.createInjector(Guice.java:92)
        at com.google.inject.Guice.createInjector(Guice.java:69)
        at com.google.inject.Guice.createInjector(Guice.java:59)
        at noop.interpreter.InterpreterMain$.main(InterpreterMain.scala:37)
        at noop.interpreter.InterpreterMain.main(InterpreterMain.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at scala.tools.nsc.ObjectRunner$$anonfun$run$1.apply(ObjectRunner.scala:75)
        at scala.tools.nsc.ObjectRunner$.withContextClassLoader(ObjectRunner.scala:49)
        at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:74)
        at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:154)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

うむ〜、エラーだ。前回のビルド時(9月頃だったか)の時はうまくいったのだが。。もう疲れたので寝る。