1

次の(最も単純な)コードでtypeOfInstance()メソッドを呼び出そうとしています。

import scala.reflect.mirror._

class Bar

object Main extends App {
  val bar = new Bar()
  typeOfInstance(bar)
}

しかし、実行中にAssertionErrorを受け取りました:

java.lang.AssertionError: assertion failed: no symbol could be loaded from package annotation (scala equivalent is class com.hablapps.annotation.Bar) by name Bar

上記のコードは、REPL ( :powerモードを使用) で問題なく動作します。この問題は、SBT (Scala 2.10-M3 セット) から実行しているときに発生します。何が起こっているのか知っている人はいますか?

4

1 に答える 1

1

これは M3 の既知の問題です。

そのプレビュー バージョンの Scala では、リフレクションは単純なクラスローディング スキームでのみ機能します (たとえば、古き良き を使用してアプリケーションを実行する場合java -cp <classpath> <name of the main class>)。SBT はもう少し複雑で、事態は爆発します。

これは 2.10.0-M4 で修正されています。

于 2012-06-26T15:23:17.180 に答える