Java 为什么Log4J环境变量需要core和api JAR';s

Java 为什么Log4J环境变量需要core和api JAR';s,java,import,log4j2,Java,Import,Log4j2,安装Log4J时,系统类路径中需要有两个变量: log4j-api log4j-core log4j api变量如下所示: log4japi:C:\apache_log4j_beta5\apache-log4j-2.0-beta5-bin\log4j-api-2.0-beta5.jar 而log4j core变量如下所示: log4j-core:C:\apache\u log4j\u beta5\apache-log4j-2.0-beta5-bin\log4j-core-2.0-beta5.j

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

log4j-api
log4j-core
log4j api变量如下所示:

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

log4j core
变量如下所示:

log4j-core:
C:\apache\u log4j\u beta5\apache-log4j-2.0-beta5-bin\log4j-core-2.0-beta5.jar

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

LOG4J_HOME-
%LOG4J api%;%log4j核心%

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

import org.apache.logging.log4j.Logger;

那么上面哪个罐子在这里被搜索?它是核心还是api?感谢您提供的任何提示,正如它的名字所说,这是一个api。因此,基本上它只包含一些接口,您可以使用这些接口将代码与log4j框架连接起来
log4j core
是这个接口的实现,所以它包含实际的代码。它实现API中的每个接口

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