我得到了这个异常:
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)上工作。
发布于 2018-04-14 21:57:51
解决这个问题的最好方法是什么?
消除重复的类。句号。没有其他的建议。通过类加载顺序来屏蔽问题以后也会出现类似的问题,使得下次维护变得更加困难。
一个应用程序不应该包含同一个类的两个冲突的实现(甚至是两个相同的实现)。如果其中一个类在(appserver-)全局类路径上:从那里删除它。
发布于 2018-04-19 23:38:06
通过滥用Tomcat中的resources工具,可以在Tomcat中实现显式JAR排序。我不打算在这里给出一个完整的答案,因为(a)这是非常不推荐的,(b)为了做到这一点,你最好真的知道你在做什么。
所以,简单地说:
无论您是真的想要这样做,还是只是修复初始的resources
<PreResources>问题,<PreResources>的所有信息,以强制将一个或多个库放在的前面
https://stackoverflow.com/questions/49821349
复制相似问题