Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Logger4j抛出异常InInitiaizeError_Java_Log4j - Fatal编程技术网

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是什么?阅读说明。