当前位置: 首页 > 知识库问答 >
问题:

javax中的NoSuchMethodError。坚持不懈桌子Index()[Ljavax/persistence/Index

江天宇
2023-03-14

我有一个Play框架应用程序,我使用的是Hibernate 4.2。5.最终版本(通过Maven依赖关系管理器检索)。我决定升级到Hibernate4.3。0.最后,成功重新编译我的应用程序并运行它。

我得到了下面的例外,并没有能够找出原因。我降级回到4.2.5,这个问题没有发生。然后,我尝试在4.2.5之后的每个最终版本中升级Hibernate。也就是说,我从4.2.5。最终到4.2.6。最后,到4.2.7。最后,到4.2.8。最后,然后到4.3。最后。问题不会发生,直到我升级到4.3.0。最后。

Java版本信息

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

例外情况:

play.api.UnexpectedException: Unexpected exception[NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:152) ~[play_2.10.jar:2.2.1]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
    at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10.jar:2.2.1]
    at scala.util.Success.flatMap(Try.scala:200) ~[scala-library.jar:na]
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
    at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:936) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3762) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3716) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]

共有3个答案

王高邈
2023-03-14

我将HibernateJPA更新为2.1,它就可以工作了。

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>
蒋斯伯
2023-03-14

Hibernate4.3是实现JPA2.1规范(JavaEE7的一部分)的第一个版本。因此,它期望类路径中有JPA2.1库,而不是JPA2.0库。这就是为什么会出现这个异常:Table。indexes()是表的一个新属性,在JPA2.1中引入

张溪叠
2023-03-14

我也遇到过同样的问题。这里的问题是play-java-jpa工件(build.sbt文件中的javaJpa键)依赖于不同版本的规范(2.0版-

当您添加hibernate entitymanager 4.3时,为entitymanager带来了更新的规范(2.1)和不同的工厂提供程序。基本上,在类路径中,两个JAR都是可传递的依赖项。

编辑您的构建。sbt文件,它将暂时解决您的问题,直到play为较新的api依赖项发布新版本的jpa插件。

libraryDependencies ++= Seq(
javaJdbc,
javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
"org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final"
)

这是为播放2.2。x。在以前的版本中,构建文件存在一些差异。

 类似资料:
  • 问题内容: 我有一个Play Framework应用程序,并且正在使用Hibernate 4.2.5.Final(可通过Maven依赖管理器检索)。我决定升级到Hibernate 4.3.0.Final,成功重新编译我的应用程序,然后运行它。 我在下面有一个例外,但无法弄清楚原因。我降级到4.2.5,并且没有发生此问题。然后,我尝试在4.2.5之后的每个最终版本中升级Hibernate。也就是说,

  • 问题内容: 我正在升级jpa,hibernate,spring和jdk,以启用JPA 2.1中的新功能。但是我收到以下错误: 我已经阅读了有关此内容的其他帖子,但是它们无法解决我的计算机上的错误。例如,SJuan76对此帖子的回答建议升级到jpa2.1,但是我已将eclipse jpa项目方面设置为2.1版,并且我也将其包含在pom.xml中。单击此链接,您可以在完整的pom.xml中阅读各种库的

  • 创建在类路径资源[ApplicationContext.xml]中定义的名为“sessionFactory”的bean时出错:调用init方法失败;嵌套异常为java。lang.NoSuchMethodError:javax。坚持不懈唯一约束。name()Ljava/lang/String; 这有什么不对吗? 我用的是 有人告诉我这是“hibernate-jpa-2.0-api-1.0.0.jar

  • 我正在开发Spring Boot应用程序,在启动服务器时遇到了这个错误。我不确定是否错误地定义了任何注释或缺少任何依赖项。任何帮助都将不胜感激。 主要类: UserService类: UserDAO类: @repository公共类UserDAO实现IUserDAO{ Build.gradle: 错误消息: 我看到了所有相关的答案,并尝试实现这些建议,如添加依赖项、在主类中添加符号等。但它显示了相

  • 我有一个问题,这似乎是非常类似于如何创建一个Jandex索引在Quarkus的类在一个外部模块,我仔细地按照所有建议的步骤(jandex maven插件,空beans.xml,索引其他依赖)。 与上述问题的一个明显区别是,quarkus在我的案例中没有找到第三方类,所以我尝试“索引其他依赖项”。然而,javax。坚持不懈AttributeConverter是maven模块javax的一部分。持久性

  • 我在启动我的web应用程序时遇到了这个错误,我真的不知道问题出在哪里,全速: 组织。springframework。豆。工厂UnsatisfiedPendencyException:创建名为“usuarioController”的bean时出错,该名称在文件[C:\Users\Carlos\eclipsejee workspace.metadata.plugins\org.eclipse.wst.