我正在使用播放框架,并且在热交换方面遇到问题(甚至无法及时启动sbt服务器)
有几个消息来源概述了该问题与play的fork运行有关,要解决该问题,应将其设置为false。
但是,玩分叉运动在做什么,关闭它的不利之处是什么?
顺便说一句,这里有一些参考:
Play fork run是sbt的功能,其中JVM是派生的。派生JVM意味着JVM作为单独的JVM运行,并作为OS中的不同进程运行。
如果未分叉JVM,则可能是某些JVM范围的设置(例如系统属性)会影响播放实例。优点之一是,当分叉崩溃时,例如在多个分叉中运行多个测试时,其他分叉仍将继续运行。
在播放的情况下,JVM是分叉的,因此它不会与sbt运行在同一JVM进程中运行。请参阅以下内容(来自sbt文档):
默认情况下,运行任务与sbt在同一JVM中运行。但是,在某些情况下需要进行分叉。或者,您可能希望在实施新任务时派生Java进程。
这很有用,因为如果您的播放实例崩溃,例如,当system.exit被调用或发生未终止的线程时,sbt将继续运行。否则sbt也会崩溃。
参考:
拥有分叉的Java VM是什么意思?
适用于Scala的SBT入门