本文介紹了Slf4j:找到slf4j-api依賴項,但未找到提供程序的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我使用龍目島。
不久前,在構建項目時,編譯器開始發出以下消息:
找到slf4j-api依賴項,但未找到提供程序。你是說
添加slf4j-Simple?請參見https://www.slf4j.org/codes.html#noProviders
。
如果您點擊該鏈接,會有一個相當模糊的評論:
如果沒有SLF4J,則報告此警告(即不是錯誤)消息
可以在類路徑上找到提供程序。放置一個(且僅放置一個)
Slf4j-nop.jar slf4j-imple.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的目的。
我不知道如何正確地做這件事。如果你有經驗,請給我講解怎么做。
推薦答案
如tutorialspoint中所述:
SLF4J代表Simple Logging Facade for Java。它提供了一個簡單的
對所有日志記錄框架進行抽象。它使用戶能夠工作
使用任何日志記錄框架,如Log4j、Logback、JUL
(java.util.Logging)等使用單一依賴項。
這意味著您必須在類路徑上為SLF4J本身的依賴項(例如Maven)提供一個具體的Java日志庫:
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.0-alpha0</version>
</dependency>
您還需要指定對首選日志庫的依賴關系。例如:
對于標準jdk1.4日志:
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-jdk14 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>2.0.0-alpha0</version>
<scope>runtime</scope>
</dependency>
對于slf4j-簡單日志記錄:
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.0-alpha0</version>
<scope>runtime</scope>
</dependency>
對于log4j日志記錄:
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.0-alpha0</version>
<scope>runtime</scope>
</dependency>
這篇關于Slf4j:找到slf4j-api依賴項,但未找到提供程序的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,