AssertionError при использовании отражения Scala 2.10-M3

Я пытаюсь вызвать метод 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). Кто-нибудь знает, что может происходить?


person jeslg    schedule 29.05.2012    source источник
comment
Кстати, попытка того же кода в Eclipse вызывает Exception в потоке main java.lang.UnsupportedOperationException: отражение Scala недоступно на этой платформе.   -  person jeslg    schedule 29.05.2012


Ответы (1)


Это известная проблема с M3.

В этой предварительной версии Scala отражение работает только с простыми схемами загрузки классов (например, когда вы запускаете приложение, используя старый добрый java -cp <classpath> <name of the main class>). SBT немного более вовлечен, и все взрывается.

Мы исправили это в версии 2.10.0-M4.

person Eugene Burmako    schedule 26.06.2012