【问题标题】:Why does the Log4J environment variable need both core and api JAR's?为什么 Log4J 环境变量需要 core 和 api JAR?
【发布时间】:2015-07-05 21:31:40
【问题描述】:

在安装Log4J时,我们需要在系统类路径中有两个变量:

log4j-api
log4j-core

log4j-api 变量如下所示:

log4j-apiC:\apache_log4j_beta5\apache-log4j-2.0-beta5-bin\log4j-api-2.0-beta5.jar

log4j-core 变量看起来像这样:

log4j 核心:C:\apache_log4j_beta5\apache-log4j-2.0-beta5-bin\log4j-core-2.0-beta5.jar

这两个环境。变量进入重叠的LOG4J_HOME 变量:

LOG4J_HOME - %log4j-api%;%log4j-core%

为什么它同时需要 api 和核心库(JAR 文件)呢?当我导入一个类时,我会说:

import org.apache.logging.log4j.Logger;

那么上面的哪个 JAR 在这里被搜索到了?它是核心还是 api ?任何提示表示赞赏,谢谢

【问题讨论】:

    标签: java import log4j2


    【解决方案1】:

    log4j-api,顾名思义是一个 API。所以基本上它只包含接口,您可以使用这些接口将您的代码与 log4j 框架接口。 log4j-core 是这个接口的实现,所以它包含了实际的代码。它实现了 API 中的每个接口。

    所以基本上当你导入Logger 类时,你是从API 库中导入它的。当你调用LogManager.getLogger() 时,它首先在一个静态块中初始化自己,它会尝试搜索有效的实现。这就是为什么您也需要核心库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      相关资源
      最近更新 更多