java - NoSuchMethodError : org/apache/log4j/Logger. setLevel(Lorg/apache/log4j/Level;)

标签 java maven logging log4j slf4j

我在 java 项目的 pom.xml 中使用这些 log4j、slf4j 和 ch.qos.logback 依赖项:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.2</version>
        </dependency>
            <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jul-to-slf4j</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>

我最近想使用外部 servlet 库并在 pom.xml 中定义了该依赖项。该 servlet 的 init 方法如下所示:

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

....

public class HealthpageServlet extends HttpServlet{
    private static final long serialVersionUID = 1L;
    private final Logger logger = Logger.getLogger(HealthpageServlet.class.getName());

    protected HealthpageService service; 

    public static final String VERSION = "Healthpage-Version 0.0.4";

    public void init() throws ServletException {
        logger.setLevel(Level.INFO);
        .....
    }

当我启动服务器时,我的 Weblogic 服务器向我显示了 init 方法中的此异常:

java.lang.NoSuchMethodError: org/apache/log4j/Logger.setLevel(Lorg/apache/log4j/Level;)V

当我在 eclipse 中打开 HealthpageServlet jar 内容时,它在 WEB-INF/lib 文件夹中有一个 log4j-1.2.15 jar。但即使我从 pom.xml 中排除该依赖项,我也会看到此异常,并且我的服务器不会启动。有什么问题吗?

最佳答案

由于我的外部 jar 的 log4j 版本 (1.2.15) 与我的父项目的 slf4j 版本 (1.6.4) 不兼容(其中 logger.setLevel() 不可用),我必须将我的 slf4j 更新为版本1.7.7。

关于java - NoSuchMethodError : org/apache/log4j/Logger. setLevel(Lorg/apache/log4j/Level;),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31288525/

相关文章:

java - 带有 com.mysql.jdbc.ReplicationDriver 的 MySql Master/Slave Spring Hibernate

java - 获取maven插件中的pom参数

java - 在控制台执行run命令时如何为java程序提供外部文件?

java - 从 ObjectInputStream 读取与写入 ObjectOutputStream 不同的 byte[]

java - http-client 从 spring-rabbit 中排除

Maven Shade - 更改文件名并替换文本

python - 为什么 python 不将异常记录到 syslog(但它确实记录了?)

iis - 如何在 Azure 中启用 cs-host IIS 日志记录?

java - 记录器格式和 throwable、slf4j、参数

java - Jooq 不使用存储功能的默认值