基于这个 Maven 仓库,hibernate-entitymanager-4.2.2.Final 版本不存在。使用 4.2.1.Final 吧,我认为你还需要添加其他的 Hibernate 依赖,比如 hibernate-core,关于这些依赖的更多信息可以在这里找到。
肯定有一些旧版本或者现在不再使用的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,如果有的话,移除它并放置最新的版本。
由于你得到了一个
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>
。