播放框架注入错误

灰狐狸

我正在尝试使用Play 2.5将JPAApi注入我的控制器,但是我不断收到以下异常。

com.google.inject.ProvisionException:无法配置,请参见以下错误:

1) Error injecting constructor, java.lang.NoClassDefFoundError: org/dom4j/io/STAXEventReader
  at play.db.jpa.DefaultJPAApi$JPAApiProvider.<init>(DefaultJPAApi.java:39)
  at play.db.jpa.DefaultJPAApi$JPAApiProvider.class(DefaultJPAApi.java:34)
  while locating play.db.jpa.DefaultJPAApi$JPAApiProvider
  while locating play.db.jpa.JPAApi
    for parameter 0 at controllers.HomeController.<init>(HomeController.java:20)
  while locating controllers.HomeController
    for parameter 1 at router.Routes.<init>(Routes.scala:40)
  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:221)
  at play.api.DefaultApplication.class(Application.scala:221)
  while locating play.api.DefaultApplication
  while locating play.api.Application

1 error
     com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1025)
     com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
     play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:405)
     play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:400)
     play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:123)
     play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:158)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:155)
     play.utils.Threads$.withContextClassLoader(Threads.scala:21)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:155)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:126)
     scala.Option.map(Option.scala:146)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:126)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:124)
     scala.util.Success.flatMap(Try.scala:231)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:124)
     play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:116)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
     java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
     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)

这是我的控制器。

public class HomeController extends Controller {

    private JPAApi jpaApi;

    @Inject
    public HomeController(JPAApi jpaApi) {
        this.jpaApi = jpaApi;
    }

    public Result index() {
        jpaApi.withTransaction(entityManager -> {
            Query query = entityManager.createNativeQuery("select max(age) from people");
            return (Long) query.getSingleResult();
        });
        return ok(index.render("Your new application is ready."));
    }

}
灰尘

您只是碰到了一个错误sbt(Play正在使用构建工具)。该错误在Hibernate 5.2.1版本中出现(但在5.2.0中不存在)。

从Hibernate 5.2.1开始,确实排除dom4j尚无法处理maven语法的所有传递依赖sbt

目前的解决方法是添加

"dom4j" % "dom4j" % "1.6.1" intransitive()

到您的输入libraryDependenciesbuild.sbt(与Hibernate依赖项并行)。

有关更多详细信息,请查看sbt可以在以下位置找到错误本身:https : //github.com/sbt/sbt/issues/1431

我报告的Hibernate错误(但实际上已被关闭已被关闭sbt)可以在以下位置找到:https : //hibernate.atlassian.net/browse/HHH-10916

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

播放框架注入错误

来自分类Dev

播放框架异步响应错误

来自分类Dev

播放框架中的构建错误

来自分类Dev

播放框架无法识别错误?

来自分类Dev

播放框架中的构建错误

来自分类Dev

播放框架+ Scala:使用Action Composition注入依赖项

来自分类Dev

播放框架依赖项注入对象与@Singleton类

来自分类Dev

播放框架。路线。错误:“方法的参数不足...”

来自分类Dev

播放框架中的错误处理

来自分类Dev

忽略不同视图的播放框架形式错误

来自分类Dev

在路由文件中播放框架错误

来自分类Dev

如何记录播放框架启动错误

来自分类Dev

播放框架-保存模型上的Mysql错误

来自分类Dev

无堆栈Scala播放框架运行时错误

来自分类Dev

在OS X上播放框架运行时错误

来自分类Dev

忽略不同视图下的播放框架形式错误

来自分类Dev

统一播放框架中的错误消息

来自分类Dev

无堆栈Scala播放框架运行时错误

来自分类Dev

播放后出现编译错误!框架新应用指南

来自分类Dev

scala 方法/播放框架/休息中的检查错误

来自分类Dev

播放框架2.5中的ScalaWS和自定义类中的WSClient依赖项注入

来自分类Dev

播放框架2.5中的ScalaWS和自定义类中的WSClient依赖项注入

来自分类Dev

播放框架generateSignedToken与generateToken

来自分类Dev

播放框架和JNotify

来自分类Dev

播放框架/ jQuery

来自分类Dev

播放框架应用托管

来自分类Dev

fbconnect播放框架2.0

来自分类Dev

播放框架的onHandlerNotFound方法

来自分类Dev

播放框架+处理js