2013-04-29 55 views
0

我试图使用Akka和调度程序与Play!在java中的框架2.1.1。
我已经在Scala和Play 2.1.0中使用它,但是导入并不是全部正常。调度程序找不到的合适的方法2.1.1

我目前的进口:

import play.Application; 
import play.GlobalSettings; 
import play.Logger; 
import play.libs.*; 
import utils.MongoUtil; 
import play.libs.Akka; 
import akka.actor.ActorRef; 
import akka.actor.Props; 

import java.util.*; 
import java.util.concurrent.TimeUnit; 

import jobs.*; 

import models.User; 

import scala.concurrent.duration.Duration; 
import scala.concurrent.duration.FiniteDuration; 

import com.mongodb.*; 

我的代码:

  ActorRef cron = Akka.system().actorOf(new Props(Cron.class)); 
      Akka.system().scheduler().schedule(
       Duration.create(0, TimeUnit.SECONDS), 
       Duration.create(24, TimeUnit.HOURS), 
       cron, 
       "tick" 
      ); 

堆栈跟踪:

error: no suitable method found for schedule(FiniteDuration,FiniteDuration,ActorRef,String) 
[error]     Akka.system().scheduler().schedule(
[error]          ^
[error]  method Scheduler.schedule(FiniteDuration,FiniteDuration,Runnable,ExecutionContext) is not applicable 
[error]  (actual argument ActorRef cannot be converted to Runnable by method invocation conversion) 
[error]  method Scheduler.schedule(FiniteDuration,FiniteDuration,Function0<BoxedUnit>,ExecutionContext) is not applicable 
[error]  (actual argument ActorRef cannot be converted to Function0<BoxedUnit> by method invocation conversion) 
[error]  method Scheduler.schedule(FiniteDuration,FiniteDuration,ActorRef,Object,ExecutionContext) is not applicable 
[error]  (actual and formal argument lists differ in length) 

我尝试了很多事情,我上网,但没有上发现似乎工作。

在此先感谢!

编辑:我真的不喜欢当你不在最新版本的API文档自动rediriged ...
我不得不在“打勾”后添加Akka.system()。dispatcher()。

回答

1

的错误是不言自明:

[error] method Scheduler.schedule(FiniteDuration,FiniteDuration,Runnable,ExecutionContext) is not applicable 
[error] (actual argument ActorRef cannot be converted to Runnable by method invocation conversion) 

所以,ActorRef不是Runnable

必须调用安排这种方式(当然,不完全是这样,修改你的程序):

system.scheduler().schedule(Duration.create(50, TimeUnit.MILLISECONDS), 
new Runnable() { 
... 
} 
}, system.dispatcher()); 
+0

谢谢,其实,它缺少在最后一个system.dispatcher()时,错误不是不言自明的...谢谢! – Simon 2013-04-29 08:45:32

+0

@西蒙很高兴听到这个,现在感觉stoopid! – 2013-04-29 08:46:26

相关问题