我正在尝试编写一条简单的log4j2日志消息。
这是代码的样子:
package com.company;
import java.io.IOException;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class Main {
private static final Logger logger = LogManager.getLogger(Main.class);
public static void main(String[] args) throws IOException {
String message = "Hello there!";
System.out.println(message);
logger.info(message);
}
}
还有导入API的外部库:
当我运行程序时,它会抛出一个:
java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
我已经导入了相关的jar文件,但不明白为什么我仍然会收到此错误。
我做错了什么吗?
答案 0 :(得分:1)
您没有在类路径中仅包含API桥log4j-api-2.11.1.jar
,而不是实际的库log4j-1.2-api-2.11.1.jar
。它将您的API 1调用转换为API 2调用。但是实际缺少处理调用的库。
将实际库添加到类路径中,或者删除桥并重写API调用(推荐),或者保留桥并保留API 1调用。
答案 1 :(得分:0)
尝试使用以下代码导入LogManager和Logger:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
答案 2 :(得分:0)
您想使用log4j2,但是您将log4j用作导入。 要使您的项目正常工作,您必须做两件事:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;