gpt4 book ai didi

单个项目中的 Java 库使用不同版本的 log4j

转载 作者:行者123 更新时间:2023-12-04 20:49:09 25 4
gpt4 key购买 nike

我的问题是我正在构建 spring-boot 项目并且我正在使用来自其他使用 log4j 1.2.8 的项目的 A 类。当我强制 spring 使用 log4j 1.2.8 时,出现以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jettyEmbeddedServletContainerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration$EmbeddedJetty.class]: Initialization of bean failed; nested excepti
on is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.boot.autoconfigure.web.ServerProperties org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration.properties; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverProperties' defined in class path resource [org/springframework/boot/autoconfigure/web/ServerPropertiesAutoConfiguration.class]: Initialization of bean failed; nested exception is java.lang.NoSuchFieldError: TRACE

Spring 至少需要 log4j 1.2.12,所以当我使用这个版本的 log4j 时,我的 A 类有以下错误:

java.lang.NoSuchMethodError: org.apache.log4j.LogManager.exists(Ljava/lang/String;)Lorg/apache/log4j/Logger;

除了升级我的A类log4j,还有什么解决办法吗?也许有什么方法可以在运行时强制某些类应该使用 log4j 1.2.8 而其他类会使用 1.2.12?

最佳答案

OSGI是这样一种技术,您可以在一个 JVM 运行时中拥有同一个库的多个版本。

但是,在大多数情况下,它都有些矫枉过正。与其他人的建议相同,升级您的源代码会更便宜。

关于单个项目中的 Java 库使用不同版本的 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25563882/

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