我正在尝试将infinispan从8.2.4.Final升级到9.1.0.Final,但在构建tomcat war-file时从嵌入式slf4j中获得一些错误。
日志:
SLF4J:类路径包含多个SLF4J绑定。
SLF4J:发现绑定 [罐:文件:/ C:!/tomcat/webapps/ROOT/WEB-INF/lib/infinispan-embedded-9.1.0.Final.jar /org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:发现绑定 [罐:文件:/ C:!/tomcat/webapps/ROOT/WEB-INF/lib/logback-classic-1.1.6.jar /org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:请参阅http://www.slf4j.org/codes.html#multiple_bindings 解释
SLF4J:实际绑定属于类型 [org.jboss.slf4j.JBossLoggerFactory] 2017年7月20日16:07:34.170
ERROR [RMI TCP连接(5)-127.0.0.1] com.myapp.context.LogbackLoggingConfigurator.configureLoggingExternal 从C:\ my-files \ conf \ logback.xml
加载记录器配置java.lang.ClassCastException :org.jboss.slf4j.JBossLoggerFactory 无法转换为ch.qos.logback.classic.LoggerContext
日志中提到的代码:
public void configureLogging(final URL config) {
final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
try {
lc.reset();
final JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
configurator.doConfigure(config);
} catch (final JoranException je) {
logger.error("Unable to configure logback", je);
}
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
}
错误的行在这里:final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
首先,我从" infinispan-embedded"中排除了slf4j-api。依赖,但没有成功,因为slf4j是硬编码的。
其次,我将<packagingExcludes>WEB-INF/lib/infinispan-embedded-9.1.0.Final.jar!/org/slf4j/impl/StaticLoggerBinder.class</packagingExcludes>
添加到maven-war-plugin(可能带有&#39;!&#39;符号我们无法访问嵌套的jar,但我找不到其他变种) 。尝试失败了。
那么,我该如何解决这个异常呢?也许有可能使用maven-shade-plugin?但这对我的项目来说似乎是不可接受的。
答案 0 :(得分:0)
我有一些问题。我用一招来解决它。我从依赖项中排除了logback。我使用infinispan-embedded作为记录器。但我认为这不是解决问题的正确方法。我想&#34; http://infinispan.org/&#34;开发人员需要将有关logger的代码导出为另一个jar。然后我们可以在maven中排除。实际上由于另一项任务而不是依赖记录器jar的正确方法。
答案 1 :(得分:0)
我有一些问题。我用一招来解决它。我从依赖项中排除了logback。我使用infinispan-embedded作为记录器。但我认为这不是解决问题的正确方法。我认为“http://infinispan.org/”开发人员需要将有关logger的代码导出为另一个jar。然后我们可以在maven中排除。实际上由于另一项任务而不是依赖记录器jar的正确方法。
我写信给infinispan团队,他们快速回应。正如他们所说,infinispan-embedded是“uber-jar”,它意味着“所有依赖于一体”。您可以使用infinispan的每个依赖项而不是它。 infinispan-core和你想要使用的。
点击此链接可以查看已打开问题的详细信息https://developer.jboss.org/message/975209?et=watches.email.thread#975209 在jboss网站上。