上述所给代码出错,显示SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/apache-maven-3.6.1/maven_repository/org/slf4j/slf4j-reload4j/1.7.36/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/apache-maven-3.6.1/maven_repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory] log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at WordCountTest.SortNumbers.main(SortNumbers.java:48)
时间: 2023-08-28 13:05:57 浏览: 95
这个错误是因为项目中引入了多个 SLF4J 绑定,造成了冲突。可以通过在项目的 pom.xml 文件中排除其中一个冲突的依赖来解决此问题。例如,如果你想排除 slf4j-log4j12 的依赖,可以按照以下方式操作:
```
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.7.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
```
在排除依赖后,重新编译和运行程序,就可以避免上述错误了。此外,log4j:WARN No appenders could be found for logger 的警告信息可能是因为没有正确配置 log4j,可以参考警告信息中提供的链接来了解如何配置 log4j。最后,java.lang.ArrayIndexOutOfBoundsException 错误可能是因为程序中访问了数组的越界元素,需要检查程序中的数组访问代码是否正确。
相关问题
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in
SLF4J(Simple Logging Facade for Java)是一个为Java应用程序提供日志记录的简单门面(facade)框架。它允许开发人员在应用程序中使用统一的API进行日志记录,而无需关注具体的日志实现细节。
关于你提到的错误信息"Class path contains multiple SLF4J bindings. SLF4J: Found binding in...",这是由于在应用程序的类路径中存在多个SLF4J绑定引起的。SLF4J只允许存在一个绑定,否则会导致冲突。
解决这个问题的方法是在应用程序的类路径中只保留一个SLF4J绑定。你可以通过以下步骤来解决这个问题:
1. 确定你的应用程序使用了哪些依赖项,并查找它们是否包含了SLF4J绑定。
2. 如果发现多个SLF4J绑定,选择其中一个并将其从依赖项中移除。
3. 如果你无法确定哪个依赖项包含了SLF4J绑定,可以尝试使用Maven或Gradle等构建工具来排除冲突的依赖项。
SLF4J: Class path contains multiple SLF4J providers.
SLF4J: Class path contains multiple SLF4J providers是一个错误信息,表示在项目的classpath中存在多个SLF4J提供者。这个问题通常会导致SLF4J无法确定使用哪个提供者,从而引发错误。
解决这个问题的方法是删除或排除冲突的SLF4J提供者。可以通过以下步骤来解决这个问题:
1. 首先,需要确定项目的依赖关系,尤其是与日志相关的依赖项。查看项目的pom.xml文件或构建配置文件,找到与SLF4J相关的依赖项。
2. 接下来,需要确定哪些依赖项导致了冲突。查找冲突的SLF4J提供者,可以在错误信息中找到类似"Found binding in"的内容,它会列出存在冲突的路径以及提供者的名称。
3. 一旦确定了冲突的提供者,可以选择将其中一个提供者从项目中移除。这可以通过在项目配置文件中排除依赖项或手动删除相关的jar文件来实现。
4. 如果移除冲突的提供者后仍然存在问题,可能需要查看项目的其他依赖项,确保它们与SLF4J的版本兼容。
总的来说,当出现SLF4J: Class path contains multiple SLF4J providers错误时,需要检查项目的依赖关系,找出冲突的SLF4J提供者并进行相应的调整。这样可以确保SLF4J能够正常工作并连接到正确的日志实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [IDEA运行报错:slf4j:Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/...](https://blog.csdn.net/qq_44425201/article/details/120863321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [SLF4J(二) - SLF4J绑定了多个实现类的错误是怎么一回事儿?源码解析](https://blog.csdn.net/sweetyi/article/details/104633321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]