Maven项目中无法使用Logback 1.5.3版本问题求助
问题原因与解决方案
核心问题1:SLF4J无可用Provider(NOPLogger)
你的logback-classic依赖设置了<scope>test</scope>,这意味着该依赖仅在测试代码的classpath中可用,而主类App.java属于主代码目录,运行时无法加载到logback-classic——它是SLF4J的具体实现,没有它SLF4J就会默认使用NOPLogger,导致日志无法输出。
核心问题2:依赖版本不匹配与冲突
- pom中配置的编译版本是
1.7,但你实际使用JDK11,版本不兼容可能引发类加载异常 - 多个logback依赖版本混乱:
logback-access:2.0.0、logback-core/classic:1.5.3、logback-examples:1.2.13,跨大版本的依赖会导致类不兼容 logback-access:common是Web环境专用依赖,普通Java项目无需引入
核心问题3:依赖标灰的原因
IDE中依赖标灰表示该依赖当前模块的classpath中不生效:
junit和logback-classic都设置了<scope>test</scope>,仅在test目录代码运行时生效,主代码运行时不会被加载,因此IDE标灰
修复步骤
1. 修正logback-classic的scope
移除logback-classic的<scope>test</scope>,让它在主代码classpath中生效:
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.5.3</version> <!-- 移除test scope --> </dependency>
2. 统一JDK编译版本
将pom中的编译版本改为11,匹配你实际使用的JDK:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>
3. 清理无效/冲突依赖
- 删除
logback-access:common依赖(普通Java项目不需要) - 删除
logback-examples依赖(仅示例用,无需引入) - 确保所有logback相关依赖版本一致,示例如下:
<!-- 只保留必要的logback依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.5.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.5.3</version> </dependency>
4. 重新构建项目
执行以下命令清理并重新构建:
mvn clean install
重启IDE,让依赖重新加载。
内容的提问来源于stack exchange,提问作者rkamthe
相关产品推荐
相关产品推荐

