错误 StatusLogger 无法为 ctx 创建查找

use*_*678 10 java log4j apache-poi

当我运行我的项目时出现此错误:

ERROR StatusLogger Unable to create Lookup for ctx
Run Code Online (Sandbox Code Playgroud)

这是整个堆栈跟踪:

错误 StatusLogger 无法为 ctx java.lang.NoClassDefFoundError 创建查找:org/apache/logging/log4j/util/ServiceLoaderUtil 在 org.apache.logging.log4j.core.impl.ThreadContextDataInjector.getServiceProviders(ThreadContextDataInjector.java:77) 在 org .apache.logging.log4j.core.impl.ThreadContextDataInjector.(ThreadContextDataInjector.java:64) 在 org.apache.logging.log4j.core.impl.ThreadContextDataInjector$ForCopyOnWriteThreadContextMap.(ThreadContextDataInjector.java:211) 在 org.apache.logging .log4j.core.impl.ContextDataInjectorFactory.createDefaultInjector(ContextDataInjectorFactory.java:94) 在 org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createInjector(ContextDataInjectorFactory.java:71) 在 org.apache.logging.log4j.core .lookup.ContextMapLookup.(ContextMapLookup.java:34) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62 )在java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)在java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)在org.apache.logging。 log4j.core.util.ReflectionUtil.instantiate(ReflectionUtil.java:189) 在 org.apache.logging.log4j.core.lookup.Interpolator.(Interpolator.java:81) 在 org.apache.logging.log4j.core.lookup .Interpolator.(Interpolator.java:100) 在 org.apache.logging.log4j.core.config.AbstractConfiguration.(AbstractConfiguration.java:135) 在 org.apache.logging.log4j.core.config.NullConfiguration.(NullConfiguration. java:32) 在 org.apache.logging.log4j.core.LoggerContext.(LoggerContext.java:74) 在 org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254) 在 org. apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218) 在 org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136) 在 org.apache.logging。 log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123) 在 org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117) 在 org.apache.logging.log4j.core。 impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47) 在 org.apache.logging.log4j.LogManager.getContext(LogManager. java:196) 在 org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599) 在 org.apache.poi.ooxml.POIXMLDocumentPart.(POIXMLDocumentPart.java:56) 在 CreateDocumentSimple.main(CreateDocumentSimple.java: 88)引起:java.lang.ClassNotFoundException:org.apache.logging.log4j.util.ServiceLoaderUtil位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)位于java.base/jdk。内部.loader。ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 27 更多线程“main”中的异常 java.lang.NoClassDefFoundError: Could not在 org.apache.logging.log4j.core.impl.ThreadContextDataInjector$ForCopyOnWriteThreadContextMap.(ThreadContextDataInjector.java:211) 处初始化 org.apache.logging.log4j.core.impl.ThreadContextDataInjector 类。 impl.ContextDataInjectorFactory.createDefaultInjector(ContextDataInjectorFactory.java:94) 在 org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createInjector(ContextDataInjectorFactory.java:71) 在 org.apache.logging.log4j.core.impl.ReusableLogEventFactory。 (ReusableLogEventFactory.java:42)在org.apache.logging.log4j.core.config.LoggerConfig。(LoggerConfig.java:101)在org.apache.logging.log4j.core.config.AbstractConfiguration。(AbstractConfiguration.java:138 )在org.apache.logging.log4j.core.config.NullConfiguration。(NullConfiguration.java:32)在org.apache.logging.log4j.core.LoggerContext。(LoggerContext.java:74)在org.apache.logging。 log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254) 在 org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218) 在 org.apache.logging.log4j.core。选择器.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector。 getContext(ClassLoaderContextSelector.java:117) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory. java:47) 在 org.apache.logging.log4j.LogManager.getContext(LogManager.java:196) 在 org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599) 在 org.apache.poi.ooxml .POIXMLDocumentPart.(POIXMLDocumentPart.java:56) 在 CreateDocumentSimple.main(CreateDocumentSimple.java:88)log4j.core.config.AbstractConfiguration。(AbstractConfiguration.java:138)在org.apache.logging.log4j.core.config.NullConfiguration。(NullConfiguration.java:32)在org.apache.logging.log4j.core.LoggerContext。 (LoggerContext.java:74)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java) :218)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150) 在 org.apache. logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47) 在 org.apache.logging.log4j.LogManager.getContext(LogManager.java:196) 在 org.apache.logging.log4j.LogManager.getLogger( LogManager.java:599) 在 org.apache.poi.ooxml.POIXMLDocumentPart.(POIXMLDocumentPart.java:56) 在 CreateDocumentSimple.main(CreateDocumentSimple.java:88)log4j.core.config.AbstractConfiguration。(AbstractConfiguration.java:138)在org.apache.logging.log4j.core.config.NullConfiguration。(NullConfiguration.java:32)在org.apache.logging.log4j.core.LoggerContext。 (LoggerContext.java:74)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java) :218)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)在org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150) 在 org.apache. logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47) 在 org.apache.logging.log4j.LogManager.getContext(LogManager.java:196) 在 org.apache.logging.log4j.LogManager.getLogger( LogManager.java:599) 在 org.apache.poi.ooxml.POIXMLDocumentPart.(POIXMLDocumentPart.java:56) 在 CreateDocumentSimple.main(CreateDocumentSimple.java:88)

我不知道这是从哪里来的,因为我在整个项目中没有使用任何记录器。如果您需要更多信息,请随时询问。

这是我的 pom.xml :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>TestPoi</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.2</version>

        </dependency>
   


    </dependencies>

</project>
Run Code Online (Sandbox Code Playgroud)

小智 4

将库 log4j-api.jar 添加到类路径中。

为了使您的项目正常运行,您必须删除以 log4j-1.x 开头的所有 jar。

我也犯了同样的错误,因为我下载log4j依赖包的时候,不知道自己需要哪些文件,所以就全部添加了。但通过这样做,无论出于何种原因,现在使用 log4j 1 而不是 log4j 2。