【问题标题】:LocationAwareLogger exception when spring integration dependencies added to project将spring集成依赖项添加到项目时的LocationAwareLogger异常
【发布时间】:2014-07-14 15:56:32
【问题描述】:

当我包含 spring-batch-integrationspring-integration-filespring-integration-sftp 时,会导致 LocationAwareLogger 异常。当我删除它时,一切都很好。在 Maven 项目中拥有这些确切的依赖项对我来说也很好。

Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
    at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:133)
    at org.apache.commons.configuration.ConfigurationUtils.locate(ConfigurationUtils.java:523)
    at org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:213)
    at org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:197)
    at org.apache.commons.configuration.AbstractFileConfiguration.<init>(AbstractFileConfiguration.java:142)
    at org.apache.commons.configuration.PropertiesConfiguration.<init>(PropertiesConfiguration.java:237) `spring-integration-sftp`
    at com.example.Main.main(Main.java:27)

这一行出错了:

final AbstractApplicationContext context = new ClassPathXmlApplicationContext(
                        "classpath:spring/batch/config/context.xml",
                        "classpath:spring/batch/config/spring-batch.xml",
                        "classpath:spring/batch/config/spring-integration.xml");

我的依赖是:

versions += [

        mavenWagonHttp: "2.2",
        kohlsCodingStandards: "2.0.15",
        log4j:"1.2.16",
        spring:"3.2.2.RELEASE",
        springBatch:"2.2.0.RELEASE",
        springBatchIntegration:"1.2.2.RELEASE",
        springIntegrationFile:"2.1.0.RELEASE",
        springIntegrationSFTP:"2.1.0.RELEASE",
        mysqlDriver:"5.1.25",
        junit:"4.11",
        commonsConfiguration:"1.6",
        apacheCommonsLang3:"3.3.2",
        slf4jLog4j12:"1.5.6"
]

libs += [
        mavenWagonHttp: "org.apache.maven.wagon:wagon-http:$versions.mavenWagonHttp",
        kohlsCodingStandards: "com.kohls.services:services-coding-standards:$versions.kohlsCodingStandards",
        log4j:"log4j:log4j:$versions.log4j",
        spring:"org.springframework:spring-core:$versions.spring",
        springBatch:"org.springframework.batch:spring-batch-core:$versions.springBatch",
        springBatchInfrastructure:"org.springframework.batch:spring-batch-infrastructure:$versions.springBatch",
        springBatchIntegration:"org.springframework.batch:spring-batch-integration:$versions.springBatchIntegration",
        springIntegrationFile:"org.springframework.integration:spring-integration-file:$versions.springIntegrationFile",
        springIntegrationSFTP:"org.springframework.integration:spring-integration-sftp:$versions.springIntegrationSFTP",
        springBatchTest:"org.springframework.batch:spring-batch-test:$versions.springBatch",
        junit:"junit:junit:$versions.junit",
        log4j:"log4j:log4j:$versions.log4j",
        commonsConfiguration:"commons-configuration:commons-configuration:$versions.commonsConfiguration",
        apacheCommonsLang3:"org.apache.commons:commons-lang3:$versions.apacheCommonsLang3",
        slf4jLog4j12:"org.slf4j:slf4j-log4j12:$versions.slf4jLog4j12"
]

dependencies {
    compile([
            libs.mavenWagonHttp,
            libs.kohlsCodingStandards,
            libs.log4j,
            libs.spring,
            libs.springBatch,
            libs.springBatchInfrastructure,
            libs.springBatchIntegration,
            libs.springIntegrationFile,
            libs.springIntegrationSFTP,
            libs.springBatchTest,
            libs.junit,
            libs.commonsConfiguration,
            libs.apacheCommonsLang3,
            libs.slf4jLog4j12
    ])
    compile fileTree(dir: 'lib', include: ['*.jar'])
}

【问题讨论】:

  • 如果没有slf4j,只有log4j,它如何工作?
  • 我得到了同样的错误,但这次我也得到了消息The requested version 1.5.8 by your slf4j binding is not compatible with [1.6, 1.7] 我注意到在我的外部库中我有slf4j-log4j12-1.5.8.jarslf4j-api-1.7.5.jar。我刷新了 Gradle 项目以重新链接我还从依赖项中删除了 libs.slf4jLog4j12 的所有依赖项。我不知道这两个罐子是从哪里来的。

标签: spring gradle spring-batch slf4j spring-integration


【解决方案1】:

所以这就是我想出的。我强迫 slf4j 使用 1.5.8 版本,它似乎工作。如果还有其他方法可以告诉我,否则我会在明天之前将其标记为最佳答案。

我将此添加到build.gradle

configurations.all {
    resolutionStrategy {
        force 'org.slf4j:slf4j-log4j12:1.5.8','org.slf4j:slf4j-api:1.5.8'
    }
}

【讨论】:

  • 我无法理解将这些 slf 工件指定为依赖项并且都具有适当版本的问题...
猜你喜欢
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2015-09-28
  • 2014-10-06
相关资源
最近更新 更多