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

rai*_*chu 5 java hibernate glassfish hibernate-5.x

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

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

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

Vit*_*lui 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/modules"

为什么?hibernate 5依赖于最新版本的jboss-logging,即使你在POM文件中声明最新版本,glassfish 4也会使用最旧版本.其实我用的是:

org.jboss.logging jboss-logging 3.3.0.Final

然后我下载了它并替换模块路径中的旧.jar 并重新开始工作,我花了2天时间尝试解决这个问题,希望它有助于解决未来的问题= D

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

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


Ond*_*Mih 2

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