首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat8: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object -java.lang.NoSuchMethodError 8

Tomcat8: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object -java.lang.NoSuchMethodError 8
EN

Stack Overflow用户
提问于 2018-04-14 00:20:30
回答 2查看 232关注 0票数 2

我得到了这个异常:

代码语言:javascript
复制
java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
            at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:142)
            at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
            at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)

为什么?有两个jars包含类Logger。这些jars是:

- jboss-logging -spi和jboss-logging

Jboss-logging-spi.jar是jbosscache-core.jar的传递依赖,不幸的是,Tomcat8首先加载了它。

解决这个问题的最好方法是什么?有没有可能控制Tomcat加载.jars的顺序?

其他信息:

-The当前的.war文件,我不能让它在新服务器(Ubuntu)上工作,它在旧服务器(OpenSuse)上工作。

EN

回答 2

Stack Overflow用户

发布于 2018-04-14 21:57:51

解决这个问题的最好方法是什么?

消除重复的类。句号。没有其他的建议。通过类加载顺序来屏蔽问题以后也会出现类似的问题,使得下次维护变得更加困难。

一个应用程序不应该包含同一个类的两个冲突的实现(甚至是两个相同的实现)。如果其中一个类在(appserver-)全局类路径上:从那里删除它。

票数 2
EN

Stack Overflow用户

发布于 2018-04-19 23:38:06

通过滥用Tomcat中的resources工具,可以在Tomcat中实现显式JAR排序。我不打算在这里给出一个完整的答案,因为(a)这是非常不推荐的,(b)为了做到这一点,你最好真的知道你在做什么。

所以,简单地说:

无论您是真的想要这样做,还是只是修复初始的resources

  • Use <PreResources>问题,
  1. 都会阅读有关<PreResources>的所有信息,以强制将一个或多个库放在

的前面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49821349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档