我正在尝试执行 samll Camel 应用程序,但出现了与 log4j 相关的错误。我检查了很多论坛,但不幸的是没有用。请帮我解决这个问题。提前致谢。
gradle 依赖项:
+--- org.slf4j:slf4j-api:1.7.6
| | \--- org.slf4j:jcl-over-slf4j:1.7.6
| | \--- org.slf4j:slf4j-api:1.7.6
log4j相关依赖:
compile group: 'org.slf4j', name: 'jcl-over-slf4j', version:'1.5.8'
compile group: 'org.slf4j', name: 'slf4j-api', version:'1.5.8'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version:'1.5.8'
compile group: 'log4j', name: 'log4j', version:'1.2.14'
异常跟踪:
INFO: Spring WebApplicationInitializers detected on classpath: [com.pluralsight.orderfulfillment.config.WebContextInitializer@513aec64]
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6, 1.7]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
Jul 05, 2017 12:58:12 PM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.AbstractMethodError: org.slf4j.impl.Log4jLoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:133)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:118)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1075)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5368)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
构建.gradle:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'war'
apply plugin: "eclipse"
group = 'com.pluralsight.camel'
version = '1.0-SNAPSHOT'
description = """"""
sourceCompatibility = 1.7
targetCompatibility = 1.7
repositories {
maven { url "http://central.maven.org/maven2/" }
}
dependencies {
compile(group: 'org.springframework', name: 'spring-core', version:'4.0.4.RELEASE') {
exclude(module: 'commons-logging')
}
compile group: 'org.springframework', name: 'spring-aop', version:'4.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-context', version:'4.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-tx', version:'4.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-aspects', version:'4.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-web', version:'4.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version:'4.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-jdbc', version:'4.0.4.RELEASE'
compile(group: 'org.springframework.data', name: 'spring-data-jpa', version:'1.5.2.RELEASE') {
exclude(module: 'spring-aop')
}
compile group: 'javax.validation', name: 'validation-api', version:'1.0.0.GA'
compile group: 'org.hibernate', name: 'hibernate-validator', version:'4.3.1.Final'
compile group: 'org.hibernate', name: 'hibernate-core', version:'4.3.5.Final'
compile group: 'org.hibernate', name: 'hibernate-entitymanager', version:'4.3.5.Final'
compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version:'1.0.0.Final'
compile group: 'org.springframework', name: 'spring-orm', version:'4.0.4.RELEASE'
compile group: 'org.slf4j', name: 'jcl-over-slf4j', version:'1.5.8'
compile group: 'org.slf4j', name: 'slf4j-api', version:'1.5.8'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version:'1.5.8'
compile group: 'log4j', name: 'log4j', version:'1.2.14'
compile group: 'org.aspectj', name: 'aspectjrt', version:'1.7.4'
compile group: 'cglib', name: 'cglib-nodep', version:'2.2'
compile group: 'javax.inject', name: 'javax.inject', version:'1'
compile group: 'postgresql', name: 'postgresql', version:'9.1-901.jdbc4'
compile group: 'commons-dbcp', name: 'commons-dbcp', version:'1.4'
compile group: 'jstl', name: 'jstl', version:'1.2'
compile group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version:'1.9.9'
compile group: 'org.apache.tiles', name: 'tiles-jsp', version:'2.2.2'
compile group: 'org.apache.tiles', name: 'tiles-el', version:'2.2.2'
compile group: 'org.apache.commons', name: 'commons-lang3', version:'3.3.2'
compile group: 'net.sf.opencsv', name: 'opencsv', version:'2.3'
compile group: 'org.apache.camel', name: 'camel-spring', version:'2.13.2'
compile group: 'org.apache.camel', name: 'camel-spring-javaconfig', version:'2.13.2'
compile group: 'org.apache.camel', name: 'camel-test-spring', version:'2.13.2'
testCompile group: 'org.springframework', name: 'spring-test', version:'4.0.4.RELEASE'
testCompile(group: 'junit', name: 'junit-dep', version:'4.10') {
exclude(module: 'hamcrest-core')
}
testCompile group: 'org.hamcrest', name: 'hamcrest-library', version:'1.3'
testCompile group: 'org.mockito', name: 'mockito-core', version:'1.9.0'
compile(group: 'javax.servlet', name: 'javax.servlet-api', version:'3.0.1') {
/* This dependency was originally in the Maven provided scope, but the project was not of type war.
This behavior is not yet supported by Gradle, so this dependency has been converted to a compile dependency.
Please review and delete this closure when resolved. */
}
compile(group: 'javax.servlet.jsp', name: 'jsp-api', version:'2.2') {
/* This dependency was originally in the Maven provided scope, but the project was not of type war.
This behavior is not yet supported by Gradle, so this dependency has been converted to a compile dependency.
Please review and delete this closure when resolved. */
}
}
最佳答案
要工作,SLF4J 的 api 版本及其绑定(bind)版本应该兼容(通常版本相同)。
在运行时,使用的 SLF4J 绑定(bind)是 1.5.8,但加载的 SLF4J API 是 1.6/1.7 版本:
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6, 1.7]
您可能有一个传递依赖项,可以提取 SLF4J 的 1.6/1.7 API 版本。
您还可以在运行时使用的类路径中指定此 jar。
检查两者。
要检查 Gradle 项目的依赖关系,您可以使用 gradle app:dependencies
获取 gradle 项目的依赖关系树。
关于java.lang.AbstractMethodError : org. slf4j.impl.Log4jLoggerAdapter.log(ava/lang/Object;Ljava/lang/Throwable;)V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44920668/