【发布时间】:2016-06-11 19:07:16
【问题描述】:
我正在部署一个使用 Maven 构建的 EAR 应用程序,该应用程序在其中一个模块中具有以下依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
当我尝试在 Glassfish Server 4.1 中部署应用程序时,我收到以下错误:
Fatal: java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
at org.hibernate.internal.NamedQueryRepository.checkNamedQueries(NamedQueryRepository.java:149)
我做了一些研究来解决这个问题,并做了以下尝试:
第一次尝试
我找到了this question 并使用this article 中的脚本来清理Glassfish 的osgi 缓存,正如问题和Glassfish/Payara Github 存储库的this issue 中所建议的那样。重新启动了服务器。同样的错误。
第二次尝试
我找到this question 并尝试了第一个答案的建议,如下所示:查看依赖关系树,我看到hibernate-entitymanager 具有以下依赖关系:
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
<scope>compile</scope>
</dependency>
所以我搜索了我的服务器安装并找到了jboss-logging.jar。安装的版本是3.1.0-GA(我现在不确定,但肯定是以前版本的依赖)。我从Maven Central Repository 下载了jboss-logging-3.3.0.Final.jar,并在我的服务器安装中替换了那个。重新启动了服务器。同样的错误。
第三次尝试
上一篇文章(和其他人)中的一些 cmets 建议添加属性 org.jboss.logging.provider=slf4j,因为我正在使用这些依赖项进行日志记录:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
<scope>test</scope>
</dependency>
我在/glassfish/domains/domain1/config/ 文件夹中找到了一些.properties 文件,但它们都不包含这样的属性,我不知道在哪个文件中添加该属性。我还在管理控制台中进行了一些搜索,但没有找到添加属性的位置。我发现的唯一日志配置是配置日志级别。
之后,我在管理控制台中找到了放置 Glassfish 服务器的一些 JVM 选项的位置,并添加了 -Dorg.jboss.logging.provider=slf4j 作为选项,但对我不起作用(更重要的是,我不得不重新启动计算机才能将 Glassfish 放入地面零)
第四次尝试
在这之前,我遇到了一个问题,并在 StackOverflow 中提出了另一个问题。在那篇帖子中由this comment 指导,我更改了项目配置,但什么也没发生(我解决了这个问题,只是稍微改变了我的依赖项,答案仍在等待中)
在所有尝试之后,我的想法已经不多了,问题仍然存在。我不知道可能是什么问题。任何指南、帮助或答案将不胜感激。如果有人需要有关情况的更多详细信息,请告诉我。
提前感谢您的合作。
编辑 1
我正在搜索并找到this article,它与我所做的类似,并为jboss-logging 添加了一个提供的依赖项,如下所示:
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
<scope>provided</scope>
</dependency>
但错误仍然存在。显然它与服务器有关,但我不知道是什么。我正在使用 GlassFish Server Open Source Edition 4.1(内部版本 13)
【问题讨论】:
标签: java hibernate logging glassfish-4.1