栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SLF4J错误:类加载器的类型具有不同的类对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SLF4J错误:类加载器的类型具有不同的类对象

Tomcat日志显示您在类路径上还有另一个slf4j-1.7.7.jar:

使用CLASSPATH:/usr/local/Cellar/tomcat/8.0.18/libexec/bin/jul-to-
slf4j-1.7.7.jar: /usr/local/Cellar/tomcat/8.0.18/libexec/bin/slf4j
-api-1.7.7.jar
:/usr/local/Cellar/tomcat/8.0.18/libexec/bin/logback-
classic-1.1.2.jar:/usr/local/Cellar/tomcat/8.0.18/libexec /bin/logback-
core-1.1.2.jar:/usr/local/Cellar/tomcat/8.0.18/libexec/bin/logback-
config/:/usr/local/Cellar/tomcat/8.0.18/libexec/ bin /
bootstrap.jar:/usr/local/Cellar/tomcat/8.0.18/libexec/bin/tomcat-juli.jar

初始化Tomcat后,它将初始化jul-to-slf4j和slf4j-api。这些jar由加载了Tomcat jar(sun / misc /
Launcher $ AppClassLoader)的Classloader加载。

当您的应用程序尝试访问slf4j-api类时,它将使用WebApplication Classloader(org / apache / catalina
/ loader /
WebappClassLoader),默认情况下,该应用程序在应用程序类路径中搜索系统类路径之前的类定义。请注意,这可以更改:https : //tomcat.apache.org/tomcat-8.0-doc/class-loader-
howto.html

在Java中,类签名由类的完全限定名称和加载该类的类加载器组成。如果从两个不同的类加载器(相同的层次结构)两次加载一个类,则JVM将有两个不同的类。尝试将一个类的对象引用指向另一个类的变量将导致ClassCastException。请查看此博客文章(项目5)以获取有关此的更多信息:https : //techblug.wordpress.com/2012/03/17/classloader-
tips/

因此,据我所知,您可以通过从Tomcat类路径中删除slf4j-*。jar来解决此问题,或者如果使用相同版本的slf4j拥有一个以上的webapp,则可以从webapp中删除jar。它将使用Tomcat类加载器加载的那些。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/466859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号