gpt4 book ai didi

java - 删除 commons-logging 并使用 slf4j 会导致 spring 出现错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:51 25 4
gpt4 key购买 nike

具体来说,我仅使用 spring 通过 ApplicationContext 配置我的项目。在我的 spring xml 中,我通过 PropertyPlaceholderConfigurer 加载一些 bean 属性。每当在依赖项中我将 commons-logging-x.x 与 jcl-slf4j.jar 交换时,上下文加载都会失败,并在占位符替换上出现 ClassNotFoundExceptions。示例:

在我的 spring.xml 中有:

<bean id="testbean" class="${testbean.implementingClass}"/>

其中 testbean.implementingClass 在 spring.properties 中定义:

testbean.implementingClass=my.implementation.TestClass

如果我使用 commons-logging jar 运行该项目,一切都会完美运行。如果我将其更改为 jcl-slf4j 那么我会得到 ClassNotFoundException 类 [${testbean.implementingClass}] 未找到,即它不进行占位符替换。有人观察到这一点吗?

编辑:我的问题与 jar 无关,因为:来自 http://www.slf4j.org/legacy.html :

我们基于 SLF4J 的 JCL 实现将允许您逐步迁移到 SLF4J,特别是如果您的软件所依赖的某些库在可预见的 future 继续使用 JCL。您可以立即享受 SLF4J 可靠性的好处,同时保持向后兼容性。只需将 commons-logging.jar 替换为 jcl-over-slf4j.jar 即可。随后,底层日志框架的选择将由 SLF4J 而不是 JCL 来完成,但不会出现困扰 JCL 的类加载器问题。底层日志框架可以是 SLF4J 支持的任何框架。很多时候,用 jcl-over-slf4j.jar 替换 commons-logging.jar 将立即永久解决与公共(public)日志记录相关的类加载器问题。

最佳答案

当您使用jcl-slf4j时,您必须确保已从项目中排除所有commons-logging依赖项。确保类路径中的任何位置都没有 commons-logging jar。

关于java - 删除 commons-logging 并使用 slf4j 会导致 spring 出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3136103/

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