java.lang.NoSuchMethodError: org.apache.logging.log4j.ThreadContext.getThreadContextMap()
java.lang.NoSuchMethodError: org.apache.logging.log4j.ThreadContext.getThreadContextMap()
我有一个带有 log4j 2.9.1 的 spring mvc 应用程序。它曾经工作正常,但突然之间,我得到
Caused by: java.lang.NoSuchMethodError: org.apache.logging.log4j.ThreadContext.getThreadContextMap()Lorg/apache/logging/log4j/spi/ThreadContextMap;
at org.apache.logging.log4j.ThreadContextAccess.getThreadContextMap(ThreadContextAccess.java:45)
每当像
这样创建记录器时,它似乎就会发生
private static final Logger log = LogManager.getLogger(WebMVCConfig.class);
下一行:
System.out.println("ThreadContext from: " + ThreadContext.class.getResource("/"
+ ThreadContext.class.getName().replace('.', '/') + ".class"));
产出
WEB-INF/lib/log4j-api-2.9.1.jar!/org/apache/logging/log4j/ThreadContext.class
在我的工作区中的其他应用程序之一中使用 ThreadContext 后,我开始收到此错误,但我在此 Web 应用程序中没有任何引用此错误的行。
我已经查看了对这个问题的所有现有回复,如果构建路径上存在版本 2.7 的 log4j-api jar,似乎会抛出此错误,但我没有似乎在依赖项中有那个 jar。
事实证明这是 Eclipse 工作区的一些问题。我创建了一个新的工作区,在那里导入了我的项目,现在工作正常。
我有一个带有 log4j 2.9.1 的 spring mvc 应用程序。它曾经工作正常,但突然之间,我得到
Caused by: java.lang.NoSuchMethodError: org.apache.logging.log4j.ThreadContext.getThreadContextMap()Lorg/apache/logging/log4j/spi/ThreadContextMap;
at org.apache.logging.log4j.ThreadContextAccess.getThreadContextMap(ThreadContextAccess.java:45)
每当像
这样创建记录器时,它似乎就会发生private static final Logger log = LogManager.getLogger(WebMVCConfig.class);
下一行:
System.out.println("ThreadContext from: " + ThreadContext.class.getResource("/"
+ ThreadContext.class.getName().replace('.', '/') + ".class"));
产出
WEB-INF/lib/log4j-api-2.9.1.jar!/org/apache/logging/log4j/ThreadContext.class
在我的工作区中的其他应用程序之一中使用 ThreadContext 后,我开始收到此错误,但我在此 Web 应用程序中没有任何引用此错误的行。
我已经查看了对这个问题的所有现有回复,如果构建路径上存在版本 2.7 的 log4j-api jar,似乎会抛出此错误,但我没有似乎在依赖项中有那个 jar。
事实证明这是 Eclipse 工作区的一些问题。我创建了一个新的工作区,在那里导入了我的项目,现在工作正常。