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

LinkageError-加载程序约束冲突-解析方法“org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()时

郦磊
2023-03-14

我发现以下错误:

ContextListenerjava。lang.LinkageError:加载程序约束冲突:解析方法“org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;”类加载器的组织。阿帕奇。卡塔琳娜。加载器。WebappClassLoader@4d1cc3c3(URL:['],家长:[)”java.net。URLClassLoader@4fccd51b当前类org/slf4j/LoggerFactory和类加载器系统(URL:[“文件:/usr/lib/jvm/jvm_8/jvm_8/lib/jvmx.jar”,“文件:/usr/lib/jvm_8/jvm_8/lib/tools.jar”,“文件:/…

似乎我的云平台默认包slf4j,我收到这个错误,因为我还将slf4j作为依赖项放在我的pom文件中,并且两个不同的类加载器正在加载slf4j

我解决这个问题的方法是将pom中的依赖范围更改为提供。

但副作用是我无法在本地的tomcat上运行它,因为它找不到slf4j库。

在这种情况下,可以做些什么来使我的战争在我的云平台和我的本地tomcat上正常运行?

共有2个答案

匡翰
2023-03-14

如果您使用的是spring-boot-starter-web-1.5.1。释放jar,那么你需要排除jul-to-slf4j-1.7.22。jar,jcl-over-slf4j-1.7.22。罐子这两个jar有冲突的slf4j api<代码>

马哲
2023-03-14

您可以在pom.xml.中使用不同的配置文件

SAP云平台示例:

<profiles>
        <profile>
            <id>local</id>
            <properties>
                <packaging.type>jar</packaging.type>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.h2database</groupId>
                    <artifactId>h2</artifactId>
                </dependency>
            </dependencies>
        </profile>
    <profile>
        <id>scp</id>
        <properties>
            <packaging.type>war</packaging.type>
        </properties>
        <build>
            <finalName>LoraConnector</finalName>
        </build>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jul-to-slf4j</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

您可以使用Eclipse(或其他工具)中的“运行配置”或在构建war文件时使用配置文件:

mvn -P scp clean package
 类似资料:
  • A在B中使用web服务。 B在A中使用web服务。 Tomcat的一切都很好。但当我在Jboss中部署时,却面临着链接错误。

  • 我见过其他的链接错误,但没有一个能说明如何使用罐子。当我在Jboss中部署我的应用程序时,它可以正常工作,但当我将应用程序部署到websphere时,我遇到了这种链接错误。在这里可以找到一个类似的问题:调用webservice方法时出现LinkageError,但不确定如何修复它 它主要是从和加载的,带有共享类 我所拥有的是jsp调用Web服务。从消息中,我看到的唯一jars来自axis.jar,

  • 我在WebSphereApplicationServer(8.5.5.14)中遇到了LinkageError。这里也发现了类似的问题LinkageError 原因:java。lang.LinkageError:解析方法“javax/xml/soap/SOAPElement.getElementQName()Ljavax/xml/namespace/QName;”时加载约束冲突:loader“com

  • 组织。springframework。豆。BeanInstationException:无法实例化bean类[gts.efx.web.login.LogInController]:构造函数引发异常;嵌套的例外是java。lang.LinkageError:加载程序约束冲突:解析方法“javax.net.ssl.SSLContext.getSocketFactory()Ljavax/net/ssl/

  • 有人知道我该怎么办吗?还是我做错了什么? 提前多谢

  • 类文件DTDScanner,DocumentScanner正在从两个jar文件com.ibm.ws.webservices.thinclient_8.5.0.jar(由应用程序通过WEB-INF/lib提供)和由Liberty profile Liberty提供的com.ibm.ws.xlxp.1.5.3_1.0.16.jar加载。这些类文件具有java.lang.LinkageError:loa