Java 外部项目中使用Hibernate的容器异常(server.ContainerException:…org.Hibernate.internal.CoreMessageLogger

Java 外部项目中使用Hibernate的容器异常(server.ContainerException:…org.Hibernate.internal.CoreMessageLogger,java,hibernate,rest,netbeans,glassfish,Java,Hibernate,Rest,Netbeans,Glassfish,我正在Glassfish 4.1.1捆绑Netbeans服务器上部署我的REST项目。作为一个maven依赖项,我已经包含了一个已经完成并测试过的外部Netbeans项目,它使用Hibernate提供功能。因此,我应该在我的REST web服务项目中使用这个Java库项目 当我调试我的REST项目时,一旦在调试模式下部署并启动了Glassfish,REST服务就会得到很好的调用,一切都很顺利,直到需要调用任何使用Hibernate的方法(来自外部lib项目)为止。然后崩溃,如下图所示 在Glas

我正在Glassfish 4.1.1捆绑Netbeans服务器上部署我的REST项目。作为一个maven依赖项,我已经包含了一个已经完成并测试过的外部Netbeans项目,它使用Hibernate提供功能。因此,我应该在我的REST web服务项目中使用这个Java库项目

当我调试我的REST项目时,一旦在调试模式下部署并启动了Glassfish,REST服务就会得到很好的调用,一切都很顺利,直到需要调用任何使用Hibernate的方法(来自外部lib项目)为止。然后崩溃,如下图所示

在Glassfish sever开始时,我注意到以下两条警告:

Warning:   The web application [unknown] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Warning:   The web application [unknown] registered the JDBC driver [com.mysql.fabric.jdbc.FabricMySQLDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Information:   HV000001: Hibernate Validator 5.1.2.Final
最后,当调用任何Hibernate involucred语句时,浏览器显示的错误是:

exception

javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: org.hibernate.internal.CoreMessageLogger.debugf(Ljava/lang/String;I)V
root cause

org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: org.hibernate.internal.CoreMessageLogger.debugf(Ljava/lang/String;I)V
root cause

java.lang.NoSuchMethodError: org.hibernate.internal.CoreMessageLogger.debugf(Ljava/lang/String;I)V
我添加屏幕截图:

谢谢,, J

-----------使用崩溃的特定行进行编辑------------

它在Class.forName(SessionFactory.Class.getCanonicalName())处崩溃。我调用此方法是为了强制类SessionFactory执行其静态块方法,该方法只配置Hibernate一次。 使用建议的将hibernate librery降级为4.x.x的解决方案,这似乎是可行的,但我不得不更改一些较新的方法以使代码适应此版本(本机查询不同,配置中不存在类元数据…)。此外,当我需要为咨询创建新的基本Hibernate对象时,我遇到了新问题,如查询:

    public static User getUserById(Long id) {
    try {
        String query = "SELECT u FROM User u WHERE u.id =  " + id;
        Query sentence;
崩溃原因如下:

此外,我在开始时也有同样的警告:

Warning:   The web application [unknown] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

Warning:   The web application [unknown] registered the JDBC driver [com.mysql.fabric.jdbc.FabricMySQLDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Information:   HV000001: Hibernate Validator 5.1.2.Final

你使用的是什么版本的hibernate?这个方法在4.x.x中。下面的链接有更多信息org.hibernate hibernate core 5.2.10.Final所以,我使用5.2.10谢谢你的快速回复。你能尝试使用4.x.x版本看看错误是否消失谢谢你的回复。我已经编辑了帖子关于您的解决方案的新信息。也许这是一个好方法。也许您可以建议我另一种强制静态代码调用的方法,以避免Classforname?
Warning:   The web application [unknown] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

Warning:   The web application [unknown] registered the JDBC driver [com.mysql.fabric.jdbc.FabricMySQLDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Information:   HV000001: Hibernate Validator 5.1.2.Final