我如何让log4J工作 - 我得到"包org.apache.log4j不存在"

Cof*_*fee 9 configuration log4j log4

我知道这可能是一个新手问题,但我在设置Log4J时遇到问题:

我想运行一个log4j演示,这是我的代码:

import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;

public class HelloLOG4j {

  private static final Logger logger = Logger.getLogger(Hello.class);

  public static  void main(String argv[]) {
 BasicConfigurator.configure();
 logger.debug("Hello world.");
 logger.info("What a beatiful day.");
  }
}
Run Code Online (Sandbox Code Playgroud)

我在System和User var中设置了我的Classpath:C:\ Users\Adel\Downloads\apache-log4j-1.2.17\log4j-1.2.17.jar

在此输入图像描述

但是当我运行我的程序时,我仍然会得到

errors found:
File: C:\Users\Adel\Desktop\various_topics\JavaProjects\HelloLOG4j.java  [line: 2]
Error: package org.apache.log4j does not exist
Run Code Online (Sandbox Code Playgroud)

我知道我设置了classpath - 如果我运行cmd行:

C:\Program Files\Java\jdk1.6.0_20>print %LOG4J_HOME%
C:\Users\Adel\Downloads\apache-log4j-1.2.17\log4j-1.2.17.jar is currently bein
g printed
Run Code Online (Sandbox Code Playgroud)

tgk*_*rog 2

您需要将 log4j home 添加到类路径中,因为 JVM 需要 log4j 类的路径

如果在 Windows 上,您可以使用

set classpath=%classpath%;%LOG4J_HOME%
Run Code Online (Sandbox Code Playgroud)

在 linux/ ubuntu 上(在开发和服务器方面比 Windows 好得多)

export classpath=$classpath:$LOG4J_HOME
Run Code Online (Sandbox Code Playgroud)

然后在将其他路径添加到类路径后运行您的应用程序,例如

set classpath=%classpath%;c:\users\adel\....
Run Code Online (Sandbox Code Playgroud)

您不需要再次添加 log4JHOME - 因为%classpath%;它将添加到当前的类路径中。

Java 不知道 LOG4J_HOME。它仅在自动配置/默认配置的情况下由 log4j 使用。

附带说明一下,尝试使用新的 log4j2 !