当前位置: 首页 > 知识库问答 >
问题:

由于slf4j api和sl4j标记调用apacheds-all-1.5.5导致的错误

尚宏硕
2023-03-14

我遇到了一个著名的错误:

java.lang.AbstractMethodError: ch.qos.logback.classic.Logger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:120)

在经历了很多SO问题后,这里是我的进步:

>

  • mvn。cmd dependency:tree-DskipTests | findstr/R/C:slf4j证明我在slf4j api jcl-over-slf4j上使用了相同版本的slf4j(1.5.5,由于以下原因,我不能使用更高版本)
  • 查找从中加载某些类的类路径,我们会看到以下结果:

    dedegJars(org.slf4j.spi.LocationAware Logger.class); dedegJars(org.apache.commons.logging.impl.SLF4JLocationAware Log.class); dedegJars(org.slf4j.Marker.class);

    debugJars(ch.qos.logback.classic.Logger.class)

    返回:

    File:/C:/用户/用户/. m2/repository/org/apache/目录/服务器/apacheds-all/1.5.5/apacheds-all-1.5.5.jar!/org/slf4j/spi/

    文件:/C:/Users/User/。m2/repository/org/slf4j/jcl-over-slf4j/1.5.5/jcl-over-slf4j-1.5.5。罐子/org/apache/commons/logging/impl/

    File:/C:/用户/用户/. m2/repository/org/apache/目录/服务器/apacheds-all/1.5.5/apacheds-all-1.5.5.jar!/org/slf4j/

    文件:/C:/Users/User/。m2/存储库/ch/qos/logback/logback classic/1.1.2/logback-classic-1.1.2。罐子/ch/qos/logback/classic/

    如何摆脱apacheds都会覆盖正确的sl4j依赖项这一事实?

    波姆。xml不包含任何关于appacheds all dependency的内容。我知道它可能是一种隐式依赖,但我该如何解决这个问题呢?


  • 共有1个答案

    陶烨赫
    2023-03-14

    我也在使用同样的依赖关系,我没有面临任何问题,你可以尝试以下方法吗

    <org.slf4j-version>1.5.5</org.slf4j-version>
    
    <!-- Logging -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${org.slf4j-version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${org.slf4j-version}</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${org.slf4j-version}</version>
                <scope>runtime</scope>
            </dependency>
    
    <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.15</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.mail</groupId>
                        <artifactId>mail</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.jms</groupId>
                        <artifactId>jms</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jdmk</groupId>
                        <artifactId>jmxtools</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jmx</groupId>
                        <artifactId>jmxri</artifactId>
                    </exclusion>
                </exclusions>
                <scope>runtime</scope>
            </dependency>
    
     类似资料:
    • 我正在为一个基于React的单页应用程序开发一个spring后端,其中我使用react-router进行客户端路由。

    • 我需要一个方法从网站上获取json并返回

    • 问题内容: 我有一个, 并且需要根据外部数据在控制器和视图之间进行选择,因此我使用和。 如果我只有它,一切都很好,但是当我添加时,会出现此错误: 可能看起来有些像(它说有对象,但看起来像,但是我不太擅长调试) 这是我的代码: 编辑 基于RadimKöhlers答案的更改 新错误: 解 这至少需要版本的 问题答案: 问题是,这只是必须返回 对象 代表或 (它的名字) http://angular-u

    • 问题内容: 我正在使用jQuery AJAX对Web服务进行查询。我的查询如下所示: 执行此操作时,我收到状态错误403。我不明白为什么我的通话导致状态代码为403。我控制着服务的安全性,并将其标记为完全开放。我知道密钥是有效的,因为我在另一个可以使用的电话中使用了它。这是有效的呼叫: 我知道这是两个不同的端点。但是我100%确信这不是服务器端身份验证或权限错误。再一次,一切在服务器端都是开放的。

    • 问题内容: 在此 coderanch链接上,我发现以下注释将给编译器错误:- 原因是,Unicode序列直接由其对应的实际字符替换。由于’\ u000a’对应于newLine字符,因此将newLine放置在找到’\ u000a’的位置。 我的问题是,“由于注释,还有其他方式导致编译错误吗?” 问题答案: 如果在注释()中定义了不推荐使用的函数,并且设置了使用不推荐使用的方法时编译器抛出错误(至少可

    • 问题内容: 我有一个经典的Java EE系统,具有JSF的Web层,用于BL的EJB 3和用于对DB2数据库进行数据访问的Hibernate 3。我在以下情况下苦苦挣扎:用户将启动一个过程,该过程涉及从数据库中检索大型数据集。检索过程花费一些时间,因此用户不会立即收到响应,变得不耐烦,并打开新的浏览器并再次启动检索,有时是多次。EJB容器显然没有意识到第一次检索不再相关的事实,并且当数据库返回结果