如果存在具有相同包结构的重复类,tomcat将如何加载该类

时间:2016-01-20 15:31:22

标签: java tomcat jboss classloader tomcat8

Jboss-allclient.jar和jboss-logging.jar有一个类 org.jboss.logging.Logger ,其中类中定义的方法不同,但两者的包结构相同类。由于我在部署时遇到了例外情况。

异常

getMessage()

的NoSuchMethodException

这是因为getMessage()方法仅存在于一个类中。不幸的是,它选择了错误的类并抛出异常。

注意:

这适用于tomcat 7(windows和linux版本)和tomcat8(Windows)
在tomcat 8( Linux版本)中工作。 JRE版本是8

我的申请需要这两个罐子。

1 个答案:

答案 0 :(得分:0)

在Tomcat 8中,无法保证在单次战争中装载罐子的顺序。之前是按字母顺序排列的。

它被报告为Apache的一个错误,但他们声称它是一个功能;)检查https://bz.apache.org/bugzilla/show_bug.cgi?id=57129

其中一个开发人员提出了一个解决方法,但我没有尝试过。您可以查看https://github.com/openwide-java/tomcat-classloader-ordered

祝你好运!