Akka TypedActor с абстрактными членами из типажа вызывает java.lang.AbstractMethodError

Учитывая следующий код:

import akka.actor._

object TraitTest {
  trait A {
    def something()
  }
  trait B extends A
  class C extends TypedActor with B {
    override def something() {
      println("Why am I not implemented?")
    }
  }

  def main(args: Array[String]) {
    val service = TypedActor.newInstance(classOf[B], classOf[C]) 
    service.something()
  }
}

При запуске main я получаю следующее исключение:

Exception in thread "main" java.lang.AbstractMethodError: TraitTest$B$$ProxiedByAWDelegation$$1322144340710.something()V
    at TraitTest$.main(TraitTest.scala:29)
    at TraitTest.main(TraitTest.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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Теперь Google наконец выдал эта ссылка, однако я не понимаю, как это "работает так, как задумано".

Может ли кто-нибудь пролить свет на проблему?

Спасибо!

Изменить
Если я изменю свой код следующим образом, я, очевидно, не получу ошибку. Однако это, конечно, не решение, а скорее временный обходной путь.

trait B extends A {
    override def something()
  }

person LeChe    schedule 20.11.2011    source источник
comment
Также возникает эта проблема на 2.10.2   -  person Chris Beach    schedule 13.11.2013


Ответы (1)


Мы полностью переработали реализацию TypedActor для версии 2.0 и отказались от использования переплетения байт-кода для ее реализации. Это приводит к гораздо более надежной и мощной функции.

Вы используете его на jdk7? (мы видели некоторые махинации с этим) Можете ли вы попробовать реализовать метод с правильной подписью? (опущен возвращаемый тип == Any, но вы переопределяете его с типом возврата Unit)

Привет, √

person Viktor Klang    schedule 20.11.2011
comment
Спасибо за ответ, я боялся, что застряну с этим. :) У вас уже есть дата выхода стабильной версии 2.0? Я бы предпочел не начинать играть с зависимостями SNAPSHOT... Приятно слышать, что переплетение отсутствует, я все равно не большой поклонник этого. Мой JDK 1.6.0_29-b11-402-11M3527, так что никаких махинаций. :) Я попробую правильное переопределение через минуту... - person LeChe; 21.11.2011
comment
К сожалению, это тоже не помогает. :( - person LeChe; 21.11.2011
comment
Нет, дата выпуска финальной версии 2.0 неизвестна. Но через пару недель мы отрежем веху. - person Viktor Klang; 21.11.2011