gpt4 book ai didi

java - Tomcat 8 中的类路径和 jar 文件加载顺序

转载 作者:行者123 更新时间:2023-11-28 21:53:09 27 4
gpt4 key购买 nike

<分区>

有谁知道在tomcat8中加载jar类的顺序指定的地方吗?

这是我们的场景:我们有两个完全相同的服务器(硬件和操作系统)。两者都运行 java 1.7.65,并在 8.0.32 版本中安装了 tomcat。启动和 VM 参数完全相同,以及特定于应用程序的设置(第二台机器只是一个冗余系统)。唯一的区别是 IP 地址,当然还有主机名。

最近从 Tomcat7 升级到 Tomcat8(在两个系统上)后,长时间忽略来自 slf4j 的消息,在应用程序启动时说“找到多个绑定(bind)...”将我们带到另一种情况,导致错误阻止我们的应用程序正确的日志记录 - 类加载的排序/排序。那是因为一个系统首先加载 logback-classic-1.0.13.jar,而在第二个系统上首先加载 slf4j-log4j12-1.6.6.jar。我们只有一个 logback.xml 而没有部署 log4j.xml,因此日志消息没有出现在正确的文件中,因为加载的 StaticLoggerBinder 不正确。

系统 1 的输出

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/backoffice/apache-tomcat-8.0.32/webapps/backoffice/WEB-INF/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/backoffice/apache-tomcat-8.0.32/webapps/backoffice/WEB-INF/lib/slf4j-log4j12-1.6.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
16:50:26,740 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
16:50:26,740 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:50:26,741 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/opt/backoffice/apache-tomcat-8.0.32/webapps/backoffice/WEB-INF/classes/logback.xml]

系统 2 的输出

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/backoffice/apache-tomcat-8.0.32/webapps/backoffice/WEB-INF/lib/slf4j-log4j12-1.6.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/backoffice/apache-tomcat-8.0.32/webapps/backoffice/WEB-INF/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).

(是的,我知道如何通过 Maven 依赖项修复它,我肯定会从我的 pom 中删除重复/冗余的依赖项... O:-))

现在我的问题是,两个完全相同的系统上的顺序怎么可能不同?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com