다음과 같은 스케줄러가 있습니다. 이것은 30 분마다 Actor 시스템에서 다른 액터에게 메시지를 보내는 것을 의미합니다. 이 코드는 Eclipse IDE에서 scala 용으로 실행할 때 잘 작동합니다. akka.actor.ActorSystem.dispatcher() Lscala/동시/ExecutionContext에 : 나는 마이크로 커널에서 (마이크로 커널이 그것을 호출 할 수 있도록 부팅과 함께)이 코드를 던질 때 는 그러나, 나는Akka Scheduler는 MicroKernel에서만 예외를 throw하지만 scala에 대해서는 Eclipse IDE에서 정상적으로 작동합니다.
java.lang.NoSuchMethodError 말하는 예외가 ; 전체 스택 추적이 아래에 나와 있습니다. 이 컨텍스트에서 유효하지 않은 "import system.dispatcher"행과 관련된 문제 일 수 있습니다. 또는 스케줄러가 너무 빨리 메시지를 시작하려고합니다.
도와주세요 ...
scheduler.scala :
import akka.actor.Actor
import akka.actor.Props
import scala.concurrent.duration._
import akka.actor._
import java.sql.Timestamp;
import java.util.Date;
class Scheduler extends Actor with ActorLogging {
import transactions._
val system = ActorSystem("Daemon")
import system.dispatcher
log.info("Scheduler initializing.")
system.scheduler.schedule(30 milliseconds, (1000*60*30) milliseconds){
self! updateUows(new Timestamp(new java.util.Date().getTime()))}
def receive = {
case updateUows(time) => {
log.info("updateuow to be sent.")
context.parent!updateUows(time)
}
}
}
전체 스택 트레이스 :
[DEBUG] [07/26/2013 15:38:23.324] [Daemon-akka.actor.default-dispatcher-4] [EventStream(akka://Daemon)] Default Loggers started
Uncaught error from thread [Daemon-akka.actor.default-dispatcher-4] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[Daemon[ERROR] [07/26/2013
15:38:23.960] [Daemon-akka.actor.default-dispatcher-4] [ActorSystem(Daemon)] Uncaught error from thread [Daemon-akka.actor.default-dispatcher-4] shutting down JVM since 'akka
.jvm-exit-on-fatal-error' is enabled
java.lang.NoSuchMethodError: akka.actor.ActorSystem.dispatcher()Lscala/concurrent/ExecutionContext;
at org.exactearth.PVDaemon.Scheduler$$anonfun$receive$1.applyOrElse(Scheduler.scala:25)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:506)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
]
java.lang.NoSuchMethodError: akka.actor.ActorSystem.dispatcher()Lscala/concurrent/ExecutionContext;
at org.exactearth.PVDaemon.Scheduler$$anonfun$receive$1.applyOrElse(Scheduler.scala:25)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:506)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Shutting down Akka...
Shutting down .............(my program)
이클립스에서 잘 작동한다는 것은 무엇을 의미합니까? 그리고 커널은 어디 있습니까? – 4lex1v
IDE와 마이크로 커널에서 실행되는 클래스 경로가 같습니까? 어쩌면 귀하의 마이크로 커널 응용 프로그램이 어쩌면 다른 버전의 akka를 집어 들고있는 것처럼 보입니다. – cmbaxter
실제로 Akka 2.2 (두 개는 바이너리 호환되지 않음)로 컴파일하면서 Akka 2.1 마이크로 커널을 사용하여 실행하려고했습니다. –