玩2.5 Ebean和JPA:NoSuchMethodError

2023-12-21

我在将项目迁移到 Play 2.5 时遇到了另一个问题。其中一个项目同时使用 Ebean 和 JPA。这是build.sbt:

name := "Project"

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

scalaVersion := "2.11.8"

routesGenerator := StaticRoutesGenerator

libraryDependencies ++= Seq(
  javaJdbc,
  javaJpa,
  "org.hibernate" % "hibernate-entitymanager" % "4.2.8.Final",
  cache,
  javaWs
)

Play 2.2.1 中一切正常。但是,现在我在尝试启动应用程序时收到以下错误:

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[ProvisionException: Unable to provision, see the following errors:

    1) Error injecting constructor, java.lang.NoSuchMethodError: javax.persistence.OneToOne.orphanRemoval()Z
      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 play.db.jpa.TransactionalAction.<init>(TransactionalAction.java:20)
      while locating play.db.jpa.TransactionalAction

    1 error]]
        at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280)
        at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206)
        at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160)
        at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188)
        at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:98)
        at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100)
        at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99)
        at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:346)
        at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:345)
        at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
        at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70)
        at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)
        at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)
        at scala.concurrent.Promise$class.complete(Promise.scala:55)
        at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153)
        at scala.concurrent.Promise$class.failure(Promise.scala:104)
        at scala.concurrent.impl.Promise$DefaultPromise.failure(Promise.scala:153)
        at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:257)
        at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251)
        at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
        at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
        at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)
        at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
        at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
        at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
        at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90)
        at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39)
        at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:405)
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
    Caused by: com.google.inject.ProvisionException: Unable to provision, see the following errors:

我认为根本原因是ebean引入了javax.persistence,而jpa引入了org.hibernate.javax.persistence,这导致了冲突。我尝试将排除添加到 build.sbt 中,如下所示:

javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api")

甚至是这个:

javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api").exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.1-api")

但这并没有帮助:激活器仍然下载 2.0 和 2.1 并将它们添加到类路径中。这里还能做什么?有什么方法可以正确排除依赖关系吗?


感谢您的回答。我通过将以下行添加到 build.sbt 和 plugins.sbt 来解决这个问题:

excludeDependencies += "javax.persistence" % "persistence-api"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

玩2.5 Ebean和JPA:NoSuchMethodError 的相关文章

随机推荐

  • 自动rebase Git 子分支

    假设我有这样的 git 历史记录 A B C D
  • Python 中的静态类型检查工具

    我正在使用现有的大型 Python 代码库 并希望开始添加类型注释 以便获得一定程度的静态检查 我在想象类似的事情Erlang http www erlang org doc reference manual typespec html 强
  • 将 HttpServletRequest 转发到不同的服务器

    I got a HttpServletRequest我想将 Spring Servlet 中的请求按原样 即 GET 或 POST 内容 转发到不同的服务器 使用 Spring 框架最好的方法是什么 我是否需要获取所有信息并构建一个新的HT
  • 从intel到arm交叉编译库

    我正在使用开源 C 库 DCMTKhttp dicom offis de dcmtk php en http dicom offis de dcmtk php en 我已经使用 VC IDE MacOS Xcode Mac iOS 模拟器在
  • jQuery 显示/隐藏 Div

    我将其用于显示 隐藏 div 扩展器 它工作正常 但是 HTML 实体没有被输出 document ready function slickbox hide slick toggle toggle function this text 96
  • ZADD 或 HMGET 等 Redis 命令可以处理的参数数量是否有限制?

    我想使用单个 ZADD 或 HMGET 命令而不是 MULTI EXEC ZADD 可以处理的 分数 成员 元组的数量有限制吗 HMGET 可以处理的字段数量有限制吗 理论上的限制相当高 但你应该以不会达到它的方式设计你的读数 保持读取大小
  • OpenThread() 返回 NULL Win32

    我觉得这个问题有一个明显的答案 但它一直在逃避我 我这里有一些 C 遗留代码 当它尝试调用 OpenThread 时 这些代码会中断 我在 Visual C 2008 Express Edition 中运行它 程序首先获取调用线程的 Thr
  • 过程没有参数并且提供了参数 3

    存储过程返回一个值 ALTER PROCEDURE dbo spCaller AS BEGIN DECLARE URL nvarchar 255 EXECUTE spBuscarUrl MIREX 2017 00001 url URL OU
  • Jenkins + Git:仅当 PR 在子目录中引入更改时才构建

    我们有一个大型 monorepo 其中包含多个项目 A 和 B 我目前将 Jenkins 设置为多分支管道项目 用于监视 monorepo 的 PR 如果创建了 PR Jenkins 会同时构建 A 和 B 现在 我希望 Jenkins 变
  • 解析if-else if语句算法

    我正在尝试为 if else 类型结构创建一个非常简单的解析器 它将构建并执行 SQL 语句 我不会测试执行语句的条件 而是测试构建字符串的条件 声明的一个例子是 select column1 from if VariableA Case1
  • 方法内部的 self 有什么意义?

    我正在七周内阅读七种编程语言 其中一个问题指出 你会如何改变 回来0如果分母为零 我首先尝试定义自己的 并将其实现代理到原始的 像这样的方法 Number oldSlash Number getSlot Number method x Nu
  • 如何在 Swift 4 中连接 Socket

    我想将我的应用程序连接到套接字 这里是代码 import UIKit import SocketIO class SocketIOManager NSObject static let manager SocketManager socke
  • 地理编码 API 有多少请求是免费的?

    我想使用 Google Geocoding API 从纬度 经度获取地址 为此 我想知道 使用免费帐户可以完成多少次点击 下面的链接显示了每 24 小时内 2 500 个免费请求 Google 地理编码 API 免费吗 https stac
  • 在专有软件中使用 Glassfish 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想在 CDDL GPLv2 许可证下的专有软件中使用 Glassfish 的某些部分 我可以这样做吗 我没有修改这些库的代码中的任何内容
  • 如何在我的 ASP.NET 菜单中使用 Bootstrap 风格的 BreadCrumb?

    我是一名新的 ASP NET 开发人员 也是 Twitter Bootstrap 的新用户 我试图在我的 ASP NET 应用程序中添加面包屑导航 我已经开发了它 但我正在尝试在其上应用 Twitter Breadcrumb 的风格 将特定
  • WebAPI POST [FromBody] 未绑定

    我将 JSON 发布到 WebAPI 控制器 但模型上的属性未绑定 public void Post FromBody Models Users User model throw new Exception model Id ToStrin
  • 如何指示 GCC 在出现 5 个错误后停止?

    是否可以指示 GNU c 编译器在发现 5 个错误后停止 在文档中找不到这个 命令行选项 fmax errors N https gcc gnu org onlinedocs gcc 4 6 0 gcc Warning Options ht
  • 在 MATLAB 中将 ASCII 代码转换为字符串

    如果我在 matlab 中有一个字符串 我可以使用以下命令将其转换为 ASCII 代码向量double gt gt my string asd gt gt double my string ans 97 115 100 我怎样才能从另一条路
  • 如何找到张量对象中每一行的最大索引?

    因此 我正在创建一个 pytorch 模型 对于前向传递 我应用前向传递方法来获取包含每个类别的预测分数的分数张量 该张量的形状为 100 10 现在 我想通过将其与包含实际分数的 y 进行比较来获得准确性 该张量的形状为 100 为了比较
  • 玩2.5 Ebean和JPA:NoSuchMethodError

    我在将项目迁移到 Play 2 5 时遇到了另一个问题 其中一个项目同时使用 Ebean 和 JPA 这是build sbt name Project version 1 0 SNAPSHOT lazy val root project i