我们如何使用自动重新加载?

试图利用自动模块重新加载功能(如此处所述),但不幸的是文档不是太有用。

它说使用配置,但配置页面是空的。

我相信你可以从这个页面传入“监视”模块列表到embeddedServer()调用,但是当我这样做,我得到以下异常: Module function provided as lambda cannot be unlinked for reload

所以它不会让你传入一个lambda作为一个应用程序模块,但是我不确定如何避免这样做,而访问Application方法(如routing() )。

有没有人能够最近自动重新加载工作? 如果是这样,怎么样?

Lambda可能会从包含函数中捕获状态,因此无法重新加载 – 无法恢复捕获的状态。 你必须提取应用程序到一个单独的功能,如下所示:

 fun Application.module() { install(CallLogging) install(Routing) { get("/") { call.respondText("""Hello, world!<br><a href="/bye">Say bye?</a>""", ContentType.Text.Html) } … } } 

然后用函数引用来启动它:

 embeddedServer(Jetty, watchPaths = listOf("embedded"), module = Application::module).start()