最近在學習使用maven的時候,在pom.xml文件中導入了slf4j的引用,當時的pom.xml文件內容是如下:
<project> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.6.1</version> <scope>test</scope> </dependency> </dependencies> </project>
當時測試的類:src/main/java/cn/jamkong/Demo.java代碼如下
public class Demo{ private static final transient Logger log = LoggerFactory.getLogger(Demo.class); public static void main(String[] args) { log.info("Hello World"); System.exit(0); } }
----在程序運行后發生了錯誤----如下:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
————————————
錯誤的原因是:
pom.xml中的<scope>test</scope>這段代碼搞的鬼。。。因為我的Demo類當時是寫在src/main/java/目錄下的。 - - !
自己馬虎的事~~在這里記下。。
附錄:
在POM 4中,<dependency>中還引入了<scope>,它主要管理依賴的部署。目前<scope>可以使用5個值:
* compile,缺省值,適用於所有階段,會隨着項目一起發布。
* provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。
* runtime,只在運行時使用,如JDBC驅動,適用運行和測試階段。
* test,只在測試時使用,用於編譯和運行測試代碼。不會隨項目發布。
* system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它。