Maven项目已装log4j仍报ND4J无可用后端、SLF4J无提供者错误
问题排查与解决方法
1. SLF4J日志报错问题
原因
pom中slf4j-log4j12依赖配置了<scope>test</scope>,该scope限制依赖仅在测试代码执行时生效,主程序运行的classpath中不会包含该SLF4J与log4j的绑定包,因此触发找不到SLF4J提供者的报错。
解决方法
删除slf4j-log4j12依赖中的<scope>test</scope>配置即可,修改后的依赖如下:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.32</version> </dependency>
2. ND4J后端缺失报错问题
原因
仅引入了nd4j-api核心接口包,未引入ND4J的具体实现后端包,ND4J运行时需要依赖具体的后端实现才能正常初始化。
解决方法
根据你的运行环境添加对应版本的ND4J后端依赖,版本需与当前nd4j-api的1.0.0-M1.1保持一致:
- CPU运行环境添加
nd4j-native依赖:
<dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native</artifactId> <version>1.0.0-M1.1</version> </dependency>
- 英伟达GPU运行环境可添加对应CUDA版本的
nd4j-cuda系列后端依赖。
修改完成后重新加载Maven依赖,再启动项目即可解决上述两个报错。
内容的提问来源于stack exchange,提问作者Ken Reid
相关产品推荐
相关产品推荐

