加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何用akka和sbt开发?

发布时间:2020-12-16 18:47:41 所属栏目:安全 来源:网络整理
导读:用sbt开发我几乎不用?运行命令,说我的代码改变了.这很舒服. 现在我要用akka玩一下.有什么方法可以恢复默认的sbt的行为,当ctrl D停止应用程序,并且代码被动起来? 这是示例应用程序: object Main extends App { println("Starting actors...") val system =
用sbt开发我几乎不用?运行命令,说我的代码改变了.这很舒服.

现在我要用akka玩一下.有什么方法可以恢复默认的sbt的行为,当ctrl D停止应用程序,并且代码被动起来?

这是示例应用程序:

object Main extends App {
  println("Starting actors...")
  val system = ActorSystem("MySystem")
  val myActor = system.actorOf(Props[Actors.MyActor],name = "myActor")
  myActor ! "test"
  // system.shutdown()
}

object Actors {
  class MyActor extends Actor {
  val log = Logging(context.system,this)
  def receive = {
    case "test" => log.info("received test")
    case _      => log.info("received something else")
  }
}

}

在这种情况下,运行和?运行命令也不会被ctrl D中断,也不会在更改时重新加载代码.只有ctrl C才能停止整个sbt.据我所知,play框架有一些解决方案可以做到这一点,因为它看起来像是在运行模式下在ctrl D上停止actor系统

解决方法

你可以尝试 JRebel.你可以得到一个 free license for Scala development.为我工作非常好,特别是与sbt一起. Sbt编译类,使用JRebel运行的Scala应用程序在运行的应用程序中即时加载新编译的类,而无需重新启动.

我的build.sbt包含以下条目:

javaOptions ++=Seq("-javaagent:/path/to/jrebel.jar","-Drebel.log=true","-Drebel.log.file=/path/to/jrebel.log")

fork := true

我有两个sbt实例在运行.一个运行程序,另一个运行程序在检测到更改时编译所有类(~compile).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读