如何解决此Log4J导入错误(与Classpath相关)?

时间:2013-04-29 03:02:33

标签: java configuration log4j log4j2

当我运行以下简单的log4J示例时,出现错误:

import org.apache.logging.log4j.core.*;
import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class log4jExample{
  /* Get actual class name to be printed on */
  static Logger log = Logger.getLogger(
                      log4jExample.class.getName());

  public static void main(String[] args)
                throws IOException,SQLException{

     log.debug("Hello this is an debug message");
     log.info("Hello this is an info message");
  }
}

,错误如下:

Error: package org.apache.logging.log4j.core does not exist
Error: cannot find symbol
  symbol:   class Logger
  location: class log4jExample
File: C:\Users\adel\Desktop\various_topics\JavaProjects\log4jExample.java  [line: 10]
Error: cannot find symbol
  symbol:   variable Logger
  location: class log4jExample

所以我相信我正确地将log4J添加到类路径中,如下所示:

enter image description here

我从apache目录中提取jar文件log4j-core-2.0-beta4.jar,如下所示:

enter image description here

我不确定发生了什么 - import语句如何工作?即在线示例告诉我说:

import org.apache.log4j.Logger;

但如果我的目录结构如下:

\ Apache的log4j的-2.0-BETA4槽\组织\阿帕奇\记录\ log4j的\芯\ Logger.java

我是否必须说:

import org.apache.logging.log4j.core.Logger;

代替?

2 个答案:

答案 0 :(得分:11)

我认为您需要在类路径中同时使用 API Core jar。按照these说明进行构建和安装,并these进行配置。在配置页面上,您询问的导入行是import org.apache.logging.log4j.Logger;,因此将从API jar中提取Logger类。

Log4j 2 需要两个罐子(而不是 Log4j 1.x 需要一个)因为:

  

API分离

     

Log4j的API与实现分开,使应用程序开发人员可以清楚地了解可以使用哪些类和方法,同时确保向前兼容性。这使Log4j团队能够以兼容的方式安全地改进实施。

答案 1 :(得分:0)

顺便说一句,log4j 2.0 beta5有一些你可能感兴趣的新功能,比如异步记录器,JSP标记库和JMX支持。