class下导致new HelloWorld行出现错误:
Exception in thread "main" akka.actor.ActorInitializationException: You cannot create an instance of [HelloWorld] explicitly using the constructor (new). You have to use one of the 'actorOf' factory methods to create a new actor. See the documentation.
at akka.actor.ActorInitializationException$.apply(Actor.scala:219)
at akka.actor.Actor$class.$init$(Actor.scala:436)
at HelloWorld.<init>(HelloWorld.scala:4)
at Driver$.main(HelloWorld.scala:38)
at Driver.main(HelloWorld.scala)
所以我尝试:val hw=actorOf(new HelloWorld)
,但这会导致编译器错误:
not found: value actorOf
下面的HelloWorld应该如何实现?
阅读其他Scala文档时,要求在扩展Actor的类中定义act方法,然后在该类上调用start方法,是否有理由使用actorOf而不是定义act方法?
以下内容摘自Scala akka docs http://doc.akka.io/docs/akka/2.2.0/Scala.html:
import akka.actor.Actor
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
}
}
}
object Driver {
def main(args: Array[String]) {
new HelloWorld
}
}
你需要编辑你的主,如下所示。其次,在第5行中,您需要将其更改为context.actorof(Props(new Greeter))
。这是因为您的Greeter
没有定义apply
函数,因此您需要自己手动创建Greeter对象。
工作代码如下:
import akka.actor.ActorSystem
class HelloWorld extends Actor {
override def preStart(): Unit = {
// create the greeter actor
val greeter = context.actorOf(Props(new Greeter), "greeter")//line 5
// 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
}
}
}
object Driver {
def main(args: Array[String]) {
val system = ActorSystem("Main")
val ac = system.actorOf(Props[HelloWorld])
}
}
初始化Yearning 启动juno(可以通过-p 指定端口 默认端口为50001) 填写conf.toml内GrpcAddr参数(默认127.0.0.1:50001) 进行调试 注意 juno与Yearning 必须共用同一个数据库且共用同一份配置文件(如juno与Yearning不在同一台主机,则需拷贝一份cofnig.toml文件与juno放在同级目录。且Yearning项目内的config
我已经通过包管理器安装了QGIS,我可以通过终端运行。如何启动QGIS? 在我的Ubuntu中,我转到nautilus并得到一个QGIS桌面图标,单击该图标后,将启动应用程序的gui。在Debian GNU/Linux8(jessie)中如何做到这一点? 下面是软件包管理器的视图:
大家好,我正在windows 7中使用xampp v3.2.1。我想在windows启动时自动启动它,但无法启动。 我尝试了这里提供的解决方案,但在服务中找不到任何东西。 我在D驱动器中安装了xampp,这就是为什么apache和mysql在从run打开services.msc时不显示在服务中的原因。 我已经从xampp控制面板的config(配置)按钮尝试过了,我选中了autostart(自动启
本文向大家介绍Spring Boot 启动端口如何启动,包括了Spring Boot 启动端口如何启动的使用技巧和注意事项,需要的朋友参考一下 Spring Boot 启动端口 Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到
问题内容: 目前,我必须去然后做: 如何使它在启动时自动启动? 我在共享Linux服务器上。 问题答案: 如果您具有计算机的超级用户访问权限,则可以根据系统的初始化流程(初始化脚本,systemd等)采用多种方法来执行此操作。 但是,如果您没有root用户,则可以采用一种干净且一致的方式在重新启动时执行程序。 首先,找出Java在您的计算机上的位置。下面的命令将告诉您它在哪里: 然后,将以下代码粘
我正在使用XAMPP,3.2.1版。我刚刚在Windows上安装了它 有没有办法让它在Windows中自动启动
我正在开发一个运行在PC上的Java测试控制器应用程序。它有: 在android手机上安装应用程序: 怎么做有什么想法吗?
问题内容: 我刚刚开始与Jenkins一起工作,遇到了一个问题。在安装了几个插件之后,它表示需要重新启动并进入“关闭”模式,但是从不重新启动。 如何手动重启? 问题答案: 要手动重新启动Jenkins,可以使用以下任一命令(通过在浏览器中输入其URL): -允许所有正在运行的作业完成。重新启动完成后,新作业将保留在队列中以运行。 -强制重启,而无需等待构建完成。