Java Logger4j抛出异常InInitiaizeError
我不熟悉Java Logger4j抛出异常InInitiaizeError,java,log4j,Java,Log4j,我不熟悉Log4j。不过我对Java很有经验 我编写了一个运行Log4j应用程序的小示例 package com.log; import org.apache.log4j.Logger; public class Log4jExample { static Logger log = Logger.getLogger(Log4jExample.class.getName()); public static void main(String[] args) {
Log4j
。不过我对Java很有经验
我编写了一个运行Log4j
应用程序的小示例
package com.log;
import org.apache.log4j.Logger;
public class Log4jExample {
static Logger log = Logger.getLogger(Log4jExample.class.getName());
public static void main(String[] args) {
log.debug("Hello, this is a debug message.");
log.info("Hello, this is an info message.");
}
}
这是我在$JAVA_HOME/jre/lib/ext/
目录中手动创建的log4j.properties
文件
# Define the root logger with appender X
log = /Users/aditya/Desktop/log4j
log4j.rootLogger = DEBUG, FILE
# Set the appender named X to be a File appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out
# Define the layout for X appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
我在MacOSX上
我以以下方式运行代码:
javac com/log/Log4jExample.java
java com.log.Log4jExample
但这就是我得到的
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext
at org.apache.log4j.Logger.getLogger(Logger.java:37)
at com.log.Log4jExample.<clinit>(Log4jExample.java:13)
线程“main”java.lang.ExceptionInInitializeError中的异常
原因:java.lang.ClassCastException:org.apache.logging.slf4j.SLF4JLoggerContext无法强制转换为org.apache.logging.log4j.core.LoggerContext
位于org.apache.log4j.Logger.getLogger(Logger.java:37)
在com.log.Log4jExample。(Log4jExample.java:13)
我做错了什么?请帮忙 问题是您在Java安装的
$Java\u HOME/jre/lib/ext/
中添加了不适当的日志JAR文件
- 不要将第三方JAR文件添加到“ext”目录,因为这会影响使用该Java安装运行的所有应用程序。(其中一些JAR很可能不适合您的所有应用程序;例如,版本不匹配等)
- 不要只在ZIP文件中添加所有日志JAR文件。您从下载的网页上的说明声明您只需要其中的两个。。。不是所有15个JAR文件
这个问题似乎是由一个JAR文件引起的,该文件的设计目的是使log4j适应sl4fj日志外观。类
org.apache.logging.slf4j.SLF4JLoggerContext
不应该在使用log4j而不使用facade的应用程序中加载,而是单独实例化。。。正如您所说的那样。类路径上有哪些日志JAR文件?不知何故,您似乎调用了创建slf4j
类而不是log4j
类的东西。如果您使用的是常规的log4jjar文件,则不会发生这种情况。我下载了log4j库,并将它们复制粘贴到我的$JAVA_HOME/jre/lib/ext目录中。你从哪里弄来的?您将需要精确…logging.apache.org/log4j/2.x/download.html从这个链接请列出您添加的JAR文件。您谈论的两个JAR是什么?阅读说明。