LoggerFactor.getLogger无法解析为某种类型

时间:2014-02-28 16:46:17

标签: java eclipse logging slf4j buildpath

我设置了一个基本的Java程序,我正在关注这个tutorial并且有这个确切的代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

我的构建路径上有jar slf4j-api-1.7.5.jar和slf4j-log4j12-1.7.5 jar。我不明白是什么给出了,我可以在F3(源代码查找)的LoggerFactory类中存在getLogger方法。我用Google搜索了这个并且似乎是这个问题的唯一原因。有什么想法吗?

这是Eclipse的.classpath:

<xml version="1.0" encoding="UTF-8"?>
<classpath>
   <classpathentry kind="src" path="src"/>
   <classpathentry kind="con" path="org.eclipse.jdit..../>
   <classpathentry kind="lib" path="/home/Desktop/slf4j-api-1.7.5.jar" sourcepath="/home/Desktop/slf4j-api-1.7.5.jar"/>
   <classpathentry kind="lib" path="slf4j-log4j12-1.7.5.jar"/>
   <classpathentry kind="lib" path="log4j-1.2.17.jar"/>
   <classpathentry kind="output" path="bin"/>
</classpath>

5 个答案:

答案 0 :(得分:4)

在您链接的教程页面上,有以下注释:

  

<强> SLF4J-log4j12-1.7.6.jar

     

绑定log4j 1.2版,这是一个广泛使用的日志框架。您还需要将log4j.jar放在类路径上。

您是否包含log4j.jar?

答案 1 :(得分:4)

包含

后我的问题解决了

slf4j-api-1.7.7.jar 和 的 SLF4J-简单1.7.7.jar

在classpath上。

答案 2 :(得分:0)

您可以始终静态使用记录器,而不是使用loggerfactory并在每次需要时创建实例:

final static Logger logger = Logger.getLogger(HelloWorld.class);

根据这个SO答案,使用任何一种方式似乎没有多少开销:

What's the overhead of creating a SLF4J loggers in static vs. non-static contexts?

答案 3 :(得分:0)

我用

解决了这个问题
import org.apache.log4j.Logger;

而不是

import java.util.logging.Logger;

答案 4 :(得分:0)

对我来说,当我在下面添加Maven依赖项时,它起作用了:

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>