scala – 无法使用sbt运行简单的akka??示例
发布时间:2020-12-16 09:02:52 所属栏目:安全 来源:网络整理
导读:我只是关注akka样本但无法运行该程序. 我使用自制程序(OSX Mountail Lion)安装了akka,sbt(0.13),scala(2.10.3) 制作名为akka_test的空目录 创建build.sbt和Hello.scala文件 在akka_test目录中运行sbt并且编译命令运行良好 sbt的运行命令抱怨没有检测到主类
我只是关注akka样本但无法运行该程序.
>我使用自制程序(OSX Mountail Lion)安装了akka,sbt(0.13),scala(2.10.3) 我该怎么做才能运行该程序? 这是我的代码 build.sbt name := "My Project" version := "1.0" scalaVersion := "2.10.2" resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/" libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.2.1" Hello.scala import akka.actor.Actor import akka.actor.Props class HelloWorld extends Actor { override def preStart(): Unit = { // create the greeter actor val greeter = context.actorOf(Props[Greeter],"greeter") // tell it to perform the greeting greeter ! Greeter.Greet } def receive = { // when the greeter is done,stop this actor and with it the application case Greeter.Done ? context.stop(self) } } object Greeter { case object Greet case object Done } class Greeter extends Actor { def receive = { case Greeter.Greet ? println("Hello World!") sender ! Greeter.Done } } 解决方法
sbt run查找“main”类,即具有def main的类(args:Array [String])或扩展特征App.由于那不能是一个演员,你需要启动一个系统并使用它来启动HelloWorld,所以类似于:
class HelloWorldMain { def main(args: Array[String]) { import akka.actor.ActorSystem val system = ActorSystem("HelloWorld") val helloWorldActor = system.actorOf(Props[HelloWorld] ...) // ... Do stuff } } 由于系统只运行直到你关闭它们,如果你想要你的主类停止你要么必须通过akka.pattern.ask使用期货并且在收集它们之后系统终止或者设置一个单独的收割者演员来杀死适合你的系统. This post有关于如何做到这一点的更多信息,this pull request是一个很好的例子,它在实践中看起来如何(并且还有一些其他有用的东西) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |