Исключение в потоке main java.lang.InstantiationException в микроядре scala akka

Я просмотрел эту документацию http://doc.akka.io/docs/akka/snapshot/scala/microkernel.html#microkernel-scala, чтобы создать отдельное приложение akka с использованием микроядра. Я выполнил его зависимости и плагины sbt. Вот мой основной класс:

package id.nolimit.platform.store.actor

import com.typesafe.config.ConfigFactory
import akka.actor.ActorSystem
import akka.actor.Props
import akka.routing.RoundRobinRouter
import akka.kernel.Bootable

object AppMainKernel extends Bootable{
    val system = ActorSystem("PlatformStore", ConfigFactory.load().getConfig("RemoteSys"))

    def startup = {
        val storeActor = system.actorOf(Props(new StoreActor).withDispatcher("dispatcher").withRouter(RoundRobinRouter(nrOfInstances = 5)), name = "storeActor")
    }

    def shutdown = {
        system.shutdown()
    }
}

что на самом деле происходит с потоком 'main'? Спасибо :)


person ans4175    schedule 15.12.2014    source источник
comment
Можете ли вы опубликовать код для StoreActor? InstantiationException обычно возникает из-за неправильного создания актора через Props или сбоя в конструкторе/предстартовом коде актора.   -  person cmbaxter    schedule 15.12.2014


Ответы (1)


Измените свой AppMainKernal с object на класс. Код, который загружает ваш Bootable, пытается создать его экземпляр с помощью отражения, но не может, потому что он определен как object (синглтон с невидимым конструктором), а не class.

person cmbaxter    schedule 15.12.2014
comment
Это работает как шарм, и да, это была моя глупая ошибка. Большое тебе спасибо. Как сказано в учебнике doc.akka.io/docs/ akka/snapshot/scala/ это должен быть класс :) - person ans4175; 16.12.2014