Как мне исправить эту ошибку импорта 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 в classpath, как показано ниже:

введите описание изображения здесь

И я извлек jar файл log4j-core-2.0-beta4.jar из каталога apache так:

введите описание изображения здесь

Я не уверен, что происходит - как работает оператор импорта? то есть пример онлайн говорит мне, чтобы сказать:

import org.apache.log4j.Logger;

но что если моя структура каталогов будет такой:

\ Апач-log4j-2,0-beta4-бен \ орг \ Apache \ Logging\log4j\ ядро ​​\Logger.java

Должен ли я сказать:

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

вместо?

2 ответа

Решение

Я думаю, что вам нужны как API, так и файлы Core в вашем classpath. Следуйте этим инструкциям для сборки и установки, а также для настройки. На странице конфигурации строка импорта, о которой вы спрашиваете, import org.apache.logging.log4j.Logger;, Итак Logger класс будет извлечен из API JAR.

Log4j 2 нуждается в двух jar-файлах (в отличие от Log4j 1.x, в котором он был нужен) из-за:

Разделение API

API для Log4j отделен от реализации, что позволяет разработчикам приложений понять, какие классы и методы они могут использовать, обеспечивая при этом прямую совместимость. Это позволяет команде Log4j безопасно и совместимым образом улучшить реализацию.

Кстати, в log4j 2.0 beta5 есть некоторые новые функции, которые могут вас заинтересовать, такие как Async Loggers, библиотека тегов JSP и поддержка JMX.

Другие вопросы по тегам