Kon*_*ner 2 java eclipse log4j slf4j maven
我有一个Java Maven项目,其依赖包括slf4j和它log4j adapter.我管理的版本log4j,slf4j-log4j12并slf4j-api根据其最新版本http://mvnrepository.com,尤其是log4j的1.2.17版本已经超过1.2.12,但我仍然得到错误
SLF4J: This version of SLF4J requires log4j version 1.2.12 or later.
See also http://www.slf4j.org/codes.html#log4j_version
Run Code Online (Sandbox Code Playgroud)
这对我来说完全不清楚.
我的Maven依赖管理如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>apache-jena-libs</artifactId>
<type>pom</type>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
我该如何摆脱警告?
PS:我也得到了java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled().
PPS:由于你的评论,我记得该程序有一个"lib"文件夹,它不是由Maven包含在类路径中,而是由Eclipse本身包含,所以冲突的依赖关系必须在那里.对不起,我完全忘记了我认为将Maven与lib文件夹混合是我的错.我想我必须尝试将尽可能多的库转换为maven依赖项.奇怪的是,即使我编辑"订单和导出"以将Maven依赖项置于顶部,问题仍然存在.
StaticLoggerBinder在早期加载的slf4j-log4j12中的代码执行检查以确定该TRACE级别在log4j中是否可用.这是代码:
private StaticLoggerBinder() {
loggerFactory = new Log4jLoggerFactory();
try {
Level level = Level.TRACE;
} catch (NoSuchFieldError nsfe) {
Util.report("This version of SLF4J requires log4j version 1.2.12 or later."+
" See also http://www.slf4j.org/codes.html#log4j_version");
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很不透明.
可能是某些其他依赖性正在拉入或实际嵌入早期版本的log4j.已知一些*-standalone.jar文件可以做到这一点.
在部署时检查您的类路径.您是否在应用服务器中部署?是服务器类路径上的旧版本log4j吗?在java认可的路径?
| 归档时间: |
|
| 查看次数: |
7611 次 |
| 最近记录: |