scala – 升级到Play 2.5.0之后:java.lang.RuntimeException:
发布时间:2020-12-16 10:00:38 所属栏目:安全 来源:网络整理
导读:我尝试将我的应用更新为Play 2.5.0.使用OneAppPerTest的所有测试都不再运行.该应用程序也不再运行.我可以使用sbt run启动应用程序,但我的第一个请求带来了相同的错误消息: java.lang.RuntimeException: There is no started application. 我确实混合了DI和
我尝试将我的应用更新为Play 2.5.0.使用OneAppPerTest的所有测试都不再运行.该应用程序也不再运行.我可以使用sbt run启动应用程序,但我的第一个请求带来了相同的错误消息:
java.lang.RuntimeException: There is no started application. 我确实混合了DI和特征,它在游戏2.4.6中正常工作. Error injecting constructor,java.lang.RuntimeException: There is no started application at com.myproject.controllers.MyController.<init>(MyController.scala:30) at com.myproject.controllers.MyController.class(MyController.scala:30) while locating com.myproject.controllers.MyController for parameter 7 at router.Routes.<init>(Routes.scala:79) while locating router.Routes while locating play.api.inject.RoutesProvider while locating play.api.routing.Router for parameter 0 at play.api.http.JavaCompatibleHttpRequestHandler.<init>(HttpRequestHandler.scala:200) while locating play.api.http.JavaCompatibleHttpRequestHandler while locating play.api.http.HttpRequestHandler for parameter 4 at play.api.DefaultApplication.<init>(Application.scala:220) at play.api.DefaultApplication.class(Application.scala:220) while locating play.api.DefaultApplication while locating play.api.Application Caused by: java.lang.RuntimeException: There is no started application at scala.sys.package$.error(package.scala:27) at play.api.Play$$anonfun$current$1.apply(Play.scala:86) at play.api.Play$$anonfun$current$1.apply(Play.scala:86) at scala.Option.getOrElse(Option.scala:121) at play.api.Play$.current(Play.scala:86) at com.myproject.model.dao.DAOSlick$class.dbConfig(DAOSlick.scala:11) at com.myproject.controllers.MyController.dbConfig$lzycompute(MyController.scala:30) at com.myproject.controllers.MyController.dbConfig(MyController.scala:30) at play.api.db.slick.HasDatabaseConfig$class.driver(DatabaseConfigProvider.scala:142) at com.myproject.controllers.MyController.driver$lzycompute(MyController.scala:30) at com.myproject.controllers.MyController.driver(MyController.scala:30) at com.myproject.controllers.MyController.driver(MyController.scala:30) at com.myproject.model.dao.JavaTimeMapper$class.$init$(JavaTimeMapper.scala:20) at com.myproject.controllers.MyController.<init>(MyController.scala:30) at com.myproject.controllers.MyController$$FastClassByGuice$$b68ea36a.newInstance(<generated>) at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40) 这是我的DAOSlick Trait,它使用了已弃用的Play.current: import play.api.Play import play.api.db.slick.DatabaseConfigProvider import slick.driver.JdbcProfile trait DAOSlick { protected lazy val dbConfig = DatabaseConfigProvider.get[JdbcProfile]("default")(Play.current) // this is line 11,where it fails protected val driver: JdbcProfile import driver.api._ } 这是“MyController”的负责人: @Singleton class WebsocketController @Inject() (redis: RedisService,notificationService: NotificationService) extends SecuredController with SomeService { 注入的Service NotificationService和Trait SomeService都在扩展DAOSlick Trait. 任何人都可以给我一个提示,如何将我的DAOSlick中的依赖项更改为Play.current,好吗? 解决方法
看起来像
DatabaseConfig via Global Lookup已经过时了.我建议不要使用全局查找,而是完全切换到依赖注入:
import javax.inject.Inject import play.api.db.slick.{DatabaseConfigProvider,HasDatabaseConfigProvider} import slick.driver.JdbcProfile class SomeDao @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] { import driver.api._ // dao stuff... } 不确定全局查找是否仍然是一个东西……可能不是Play.current的取消.如果我错了,请纠正我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |