【发布时间】:2014-07-14 15:56:32
【问题描述】:
当我包含 spring-batch-integration、spring-integration-file 和 spring-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.jar和slf4j-api-1.7.5.jar。我刷新了 Gradle 项目以重新链接我还从依赖项中删除了libs.slf4jLog4j12的所有依赖项。我不知道这两个罐子是从哪里来的。
标签: spring gradle spring-batch slf4j spring-integration