嵌套异常是java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence

IT小君   2023-09-16T19:45:11
AI系统维护升级中,请稍后再试!如有不便敬请谅解。
评论(3)
IT小君

由于你得到了一个java.lang.NoClassDefFoundError(而不是ClassNotFoundException),很可能是一种类加载问题。

通常是由于导入了已经在应用服务器中可用的webapp库(WEB-INF/lib)中的JAR文件导致的。

在你的情况下,我怀疑是hibernate-jpa-2.0-api.jar

有两个尝试的方法:

  • 从你的依赖中排除hibernate-jpa-2.0-api.jar

    或者

  • weblogic.xml文件中添加<prefer-web-inf-classes>

2023-09-16T19:45:21   回复
IT小君

基于这个 Maven 仓库,hibernate-entitymanager-4.2.2.Final 版本不存在。使用 4.2.1.Final 吧,我认为你还需要添加其他的 Hibernate 依赖,比如 hibernate-core,关于这些依赖的更多信息可以在这里找到。

2023-09-16T19:45:29   回复
IT小君

肯定有一些旧版本或者现在不再使用的hibernate jars存在于你的lib文件夹中。在我的情况下,它是hibernate-annotations-x.x.x.jar。

我从我的lib文件夹中移除了这个hibernate-annotations-x.x.x.jar。

如果你正在使用hibernate-commons-annotations-x.x.x.jar,那么不需要放置上述的jar。我遇到了同样的问题,当我移除了hibernate-annotations-x.x.x.jar并重新启动服务器后,错误就解决了。只需要放置hibernate-commons-annotations-x.x.x.jar。

搜索是否有其他旧版本的hibernate jars,如果有的话,移除它并放置最新的版本。

2023-09-16T19:45:39   回复