我用龙目岛。 前一段时间,在构建项目时,编译器开始发出以下消息:
找到了slf4j-api依赖性,但未找到提供程序。你的意思是 添加slf4j-simple?参见https://www.slf4j.org/codes.html#noProviders
如果您点击链接,则会有一个模糊的评论:
如果没有SLF4J,则报告此警告,即不是错误消息 提供程序可以在类路径中找到。放置一个(只有一个) slf4j-nop.jar的slf4j-simple.jar,slf4j-log4j12.jar,slf4j-jdk14.jar的 或类路径上的logback-classic.jar应该可以解决问题。 请注意,这些提供程序必须针对slf4j-api 1.8或更高版本。
在没有提供程序的情况下,SLF4J将默认为不操作 (NOP)记录器提供商。
请注意,slf4j-api版本1.8.x及更高版本使用 ServiceLoader机制。早期版本依赖静态绑定器 slf4j-api不再支持的机制。请阅读常见问题解答 条目SLF4J 1.8.0版中有哪些更改?对于进一步重要 详细信息。
如果您负责打包应用程序并且不在乎 关于日志记录,然后将slf4j-nop.jar放在您的类路径上 应用程序将摆脱此警告消息。注意嵌入 库或框架之类的组件不应声明 依赖于任何SLF4J提供程序,但仅依赖slf4j-api。当一个 库在SLF4J提供程序上声明了编译时依赖性, 将该提供者强加给最终用户,从而否定了SLF4J的目的。
我不知道如何正确地做。如果您有经验,请向我解释该怎么做。
答案 0 :(得分:0)
它表明我需要在每个模块的build.gradle或root gradle中具有经典的logback才能预警。
答案 1 :(得分:0)
如tutorialspoint中所述:
SLF4J代表Java的简单日志记录外观。它提供了一个简单的 所有日志记录框架的抽象。它使用户能够工作 与任何日志记录框架(例如Log4j,Logback,JUL)一起使用 (java.util.logging)等使用单个依赖项。
这意味着您必须在SLF4J本身的依赖关系之上,在类路径上提供具体的Java日志记录librairie(带有Maven的示例):
:: Ensure the variable "again" is not defined
:RETRY1
set "again="
:: Get user-input to "again"
set /p again=Repeat again? [Y/N]=
:: Test the value entered - ENTER only (first way)
if defined again (echo something was entered) else (echo ENTER only)
:: Test the value (second way - more conventional using /i to make case-insensitive)
if "%again%"=="" goto second
if /i "%again%"=="N" exit
if /i "%again%"=="Y" goto yes
:: We get here if the entry was neither ENTER alone, "Y" or "N"
echo "%again%" is not a valid response.
goto retry1
您还需要指定对首选日志记录库的依赖关系。例如:
对于标准jdk1.4日志记录:
std::chrono
对于 slf4j-简单日志记录:
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.0-alpha0</version>
</dependency>
对于 log4j日志记录:
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-jdk14 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>2.0.0-alpha0</version>
<scope>test</scope>
</dependency>