gpt4 book ai didi

java - slf4j如何将sfl4j-api中放置的org.slf4j.impl.StaticLoggerBinder替换成真正的StaticLoggerBinder

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:46 27 4
gpt4 key购买 nike

slf4j api中存在类org.slf4j.impl.StaticLoggerBinder, org.slf4j.impl.StaticMarkerBinder, org.slf4j.impl.StaticMDCBinder。但是每个到具体记录器的绑定(bind)都应该包含相同的类。

例如:

http://grepcode.com/file/repo1.maven.org/maven2/org.slf4j/slf4j-api/1.6.1/org/slf4j/impl/StaticLoggerBinder.java?av=f

及其 log4j 实现: http://grepcode.com/file/repo1.maven.org/maven2/org.slf4j/slf4j-log4j12/1.6.1/org/slf4j/impl/StaticLoggerBinder.java?av=f

java类加载器如何替代呢?这里不应该异常(exception)吗?

最佳答案

如果您提取实际的 slf4j-api jar,您会注意到 org.slf4j.impl.StaticLoggerBinder 实际上并未包含在 jar 中。 SFL4J api 是针对构建时的类编译的,但它实际上并未包含在工件中。如果您在 api 模块中查看 org.slf4j.impl.StaticLoggerBinder 的源代码,它没有实现,所有公共(public)实例方法都会抛出 UnsupportedOperationException。没关系,因为该类已从 slf4j-api jar 中排除。

类加载器正常运行并选择需要加载类时找到的第一个版本的org.slf4j.impl.StaticLoggerBinder。这通常来自它在类路径中列出的第一个 slf4j 实现 jar。

注意:findPossibleStaticLoggerBinderPathSet() 仅用于警告类路径上存在多个绑定(bind)。它实际上并不加载任何绑定(bind)。

关于java - slf4j如何将sfl4j-api中放置的org.slf4j.impl.StaticLoggerBinder替换成真正的StaticLoggerBinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222632/

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