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

标签 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

我的应用程序需要这两个 jar 。

最佳答案

在 Tomcat 8 中,单次 war 中加载 jar 的顺序无法保证。在它按字母顺序排列之前。

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

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

祝你好运!

关于java - 如果存在具有相同包结构的重复类,tomcat 将如何加载该类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34904120/

相关文章:

Tomcat autodeploy有时只爆炸部分WAR

java - EJB 升级到 JBoss AS 7 时出错

java - 单击按钮后将对象添加到 JPanel

java - 通过android连接到我自己的路由器

java - 对同时包含数字和字母的Arraylist进行排序

java - Ode 服务器停止时出错(以及 BPEL 部署错误)

java - jboss-as-maven-plugin 无法部署到远程 JBoss AS7?

jakarta-ee - 如何将 .properties 文件中的值包含到 web.xml 中?

java - 如何对齐对象并设置彼此之间的间距?使用 JavaFX 和 Java 进行编程

java - 使用 Docker 从命令行构建 Android 项目