Я пытаюсь создать проект Play Framework в качестве подпроекта sbt.
В качестве минимальной конфигурации я создал этот build.sbt:
name := """api-skeleton"""
organization := "my.domain"
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).aggregate(api)
lazy val api = (project in file("api")).enablePlugins(PlayScala)
libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0" % Test
scalaVersion := "2.13.1"
Запуск sbt project api run
Play Framework начинается как Ожидается, сообщает мне, что прослушивает порт 9000 и ждет запросов. Отправка запроса к нему приведет к этому сообщению об ошибке:
java.lang.RuntimeException: No application loader is configured. Please configure an application loader either using the play.application.loader configuration property, or by depending on a module that configures one. You can add the Guice support module by adding "libraryDependencies += guice" to your build.sbt.
scala.sys.package$.error(package.scala:30)
play.api.ApplicationLoader$.play$api$ApplicationLoader$$loaderNotFound(ApplicationLoader.scala:51)
play.api.ApplicationLoader$.apply(ApplicationLoader.scala:159)
play.core.server.DevServerStart$$anon$1.$anonfun$reload$3(DevServerStart.scala:188)
play.utils.Threads$.withContextClassLoader(Threads.scala:21)
play.core.server.DevServerStart$$anon$1.reload(DevServerStart.scala:181)
play.core.server.DevServerStart$$anon$1.get(DevServerStart.scala:141)
play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:296)
play.core.server.AkkaHttpServer.$anonfun$createServerBinding$1(AkkaHttpServer.scala:186)
akka.stream.impl.fusing.MapAsync$$anon$30.onPush(Ops.scala:1261)
akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:541)
akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:423)
akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:624)
akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:501)
akka.stream.impl.fusing.GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:599)
akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:768)
akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:783)
akka.actor.Actor.aroundReceive(Actor.scala:533)
akka.actor.Actor.aroundReceive$(Actor.scala:531)
akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:690)
akka.actor.ActorCell.receiveMessage(ActorCell.scala:573)
akka.actor.ActorCell.invoke(ActorCell.scala:543)
akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269)
akka.dispatch.Mailbox.run(Mailbox.scala:230)
akka.dispatch.Mailbox.exec(Mailbox.scala:242)
java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Поиск в этом сообщении (и его чтение) говорит мне, что мне нужно добавить подсказку в мой проект. Что я и сделал, как видно в build.sbt. Также кое-что об удалении целевых папок в аналогичном StackQuestion, которое я тоже пытался.