Đây có thể là lỗi cực kỳ đơn giản nhưng tôi không thể làm cho nó hoạt động bình thường. Tôi đang sử dụng akka 2.2.3 để tạo ứng dụng dựa trên diễn viên trong scala.Tạo một diễn viên
Quá trình cài đặt đơn giản như sau:
object Main {
def main(args: Array[String]) = {
val system = ActorSystem("Test")
val discoverer = system.actorOf(Props[Discoverer], "discoverer")
implicit val timeout = Timeout(5.seconds)
val not = discoverer ? Messages.Find(something)
not.onComplete {
case Success(va) => println(va)
case Failure(err) => println(err)
}
...
}
}
Và nam diễn viên chính
class Discoverer extends Actor {
override def preStart() = {
val refresher = context.actorOf(Props[Refresher], "refresher")
refresher ! Refresh
}
def receive = {
case _ => sender ! Answer
}
}
Và Refresher
diễn viên
class Refresher extends Actor {
...
}
Những gì bạn nên lấy đi từ này là gì của các diễn viên của tôi có các hàm tạo tham số.
Tuy nhiên nếu tôi cố gắng chạy ứng dụng của tôi nó không thành công với
[ERROR] [12/09/2013 13:17:06.893] [Test-akka.actor.default-dispatcher-3]
[akka://Test/user/discoverer] no matching constructor found on
class Discoverer$Refresher for arguments []
lỗi của tôi là gì đây? Tôi có nên tạo ra các diễn viên của mình với .actorOf(Props[Class], "actorname")
không?
Tôi khá chắc chắn rằng vấn đề là bạn đang sử dụng lớp bên trong cho lớp Refresher. Không thể nói tại sao. –
@ om-nom-nom Đó là vấn đề. Cảm ơn bạn. Tuy nhiên nó sẽ được tốt đẹp để biết lý do tại sao đây là trường hợp. – mgttlinger