运行Jar包时SLF4J加载失败警告(用Log4j2)如何解决?
解决SLF4J静态绑定类缺失的警告
这个警告本质是SLF4J API已经在类路径里了,但找不到对应的日志实现绑定——虽然你用的是Log4j2,但SLF4J和Log4j2之间需要一个适配桥接才能联动起来,不然SLF4J就只能用默认的NOP空实现,同时抛出警告。
给你两个可行的解决方案,优先选第一个:
方案一:引入Log4j2对SLF4J的绑定依赖
这是最稳妥的方式,让传递依赖带来的SLF4J日志请求都转发到你的Log4j2处理,同时消除警告。在你的Maven pom.xml里添加以下依赖,注意版本号要和你当前使用的Log4j2核心版本保持一致:<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>你的Log4j2版本,比如2.20.0</version> </dependency>方案二:排除传递依赖的SLF4J API
如果你确定那些带SLF4J传递依赖的库不需要SLF4J也能正常运行,可以直接把slf4j-api从传递依赖里排除掉。找到引入传递依赖的那个dependency节点,添加exclusion配置:<dependency> <groupId>依赖库的GroupId</groupId> <artifactId>依赖库的ArtifactId</artifactId> <version>依赖库版本</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency>注意:这种方法有风险,如果依赖库内部确实依赖SLF4J来输出日志,排除后可能会抛出ClassNotFoundException,所以建议先测试再用。
内容的提问来源于stack exchange,提问作者neves
相关产品推荐
相关产品推荐

