实例化持久性提供程序时出错 class java.lang.ClassNotFoundException:org.hibernate.ejb.HibernatePersistence

Error instantiating Persistence Provider class java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence

在 Weblogic 上部署 EJB 应用程序:12.2.1,我遇到异常:

"Error instantiating the Persistence Provider class org.hibernate.ejb.HibernatePersistence of the PersistenceUnit entityManager: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence"

我在 persistence.xml 中有以下配置来指定持久性提供程序

<persistence-unit name="entityManager">
    <!-- Use Hibernate persistency -->  
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

及以下在 weblogic-application.xml

<prefer-application-packages>
    <package-name>antlr.*</package-name>
    <package-name>javax.persistence.*</package-name>
</prefer-application-packages>

我按照以下 link 检查了 WL 中设置的默认持久性提供程序,即 TopLink。

https://docs.oracle.com/middleware/1213/wls/WLACH/taskhelp/domainconfig/ConfigureDefaultJPAProvider.html

此外,尝试通过以下配置使用 hibernate-jpa-api.jar、slf4j-api.jar 在 setDomainEnv.cmd 中设置类路径变量并重新启动服务器。仍然面临同样的问题。

set EXT_PRE_CLASSPATH=C:\Projects\...\lib\hibernate\hibernate-jpa-api.jar;C:\Projects\...\lib\hibernate\slf4j-api.jar

将 hibernate jar 添加到 weblogic 域的 lib 文件夹可以工作,即 hibernate.jar , hibernate-api.jar , javax.persistence.jar, com.oracle.jpa2support_ ar 和一个的您在 setDomainEnv.cmd

的类路径中设置

来源:-https://docs.oracle.com/cd/E12839_01/web.1111/e13706/classloading.htm#WLPRG324https://community.oracle.com/thread/1065416