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

当我运行以下简单的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添加到类路径中,如下所示:

在此处输入图像描述

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

在此处输入图像描述

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

 import org.apache.log4j.Logger; 

但是如果我的目录结构如下所示:

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

我不得不说:

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

代替?

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

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

API分离

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

顺便说一下,log4j 2.0 beta5有一些你可能感兴趣的新function,比如Async Loggers,JSP标签库和JMX支持。