Hibernate 5 + Glassfish 4.1.1:java.lang.NoSuchMethodError:org.jboss.logging.Logger.debugf(Ljava / lang / String; I)V

时间:2016-01-15 14:53:34

标签: java hibernate glassfish hibernate-5.x

当我将Hibernate 5添加到我的网站时,我无法在Glassfish 4.1.1中使用它。我总是收到错误

  

java.lang.NoSuchMethodError:   org.jboss.logging.Logger.debugf(Ljava /郎/字符串;我)V

我试图替换Glassfish模块文件夹中的jboss-logging库,就像我在回答类似问题时读到的那样,但它没有改变任何东西。我也试过使用Hibernate 4,但是这又产生了一个错误。

3 个答案:

答案 0 :(得分:6)

在我的情况下,我在tomcat上运行带有JPA注释的Hibernate 5,当我改为glassfish 4.1时停止工作

错误:

找不到hibernate.properties

确保:src / main / resources / hibernate.cfg.xml存在

如果你只有hibernate-core的依赖,我使用的是hibernate-annotations和hibernate-common-annotations,而且它正在创造冲突。 hibernate 5不需要这两个,我在某处读过。试着删除;)

之后会出现新错误:

java.lang.NoSuchMethodError:org.jboss.logging.Logger.debugf(Ljava / lang / String; I)V

  

原因是最古老的jboss-logging.jar:   " YOUR_GLASSFISH_FOLDER /的glassfish /模块"

     

为什么呢? hibernate 5依赖于最新版本的   jboss-logging,即使你使用最古老的版本,glassfish 4也是如此   在你的POM文件中声明最新版本。实际上我正在使用:

     

org.jboss.logging jboss-logging 3.3.0.Final

     

然后我下载并替换模块路径中的旧.jar   它恢复工作,我花了两天时间试图解决这个问题,我希望如此   帮助一些未来的问题= D

我使用此链接来帮助我:https://medium.com/@mertcal/using-hibernate-5-on-payara-cc242212a5d6#.npq2hdprz

在我的情况下,另一个解决方案可以回到最后一个Hibernate 4版本(4.3.11.Final),但在我看来它已经太老了

答案 1 :(得分:3)

我有类似的问题,我可以通过在glassfish-web.xml目录中创建WEB-INF文件来修复它。该文件的内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
     <class-loader delegate="false"/>
</glassfish-web-app>

这可以确保glassfish不会加载它的内部库,而是加载项目中的库..

答案 2 :(得分:2)

尝试清理域中的glassfish osgi-cache文件夹。你可以在这个Payara github问题中找到详细信息:https://github.com/payara/Payara/issues/554(Payara是Glassfish的一个附加功能,所以基本机制与Glassfish相同)