当我将Hibernate 5添加到我的网站时,我无法在Glassfish 4.1.1中使用它。我总是收到错误
java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava /郎/字符串;我)V
我试图替换Glassfish模块文件夹中的jboss-logging库,就像我在回答类似问题时读到的那样,但它没有改变任何东西。我也试过使用Hibernate 4,但是这又产生了一个错误。
答案 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相同)