为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.NoClassDefFoundError: Lorg/slf4j/Logger

java.lang.NoClassDefFoundError: Lorg/slf4j/Logger

心有法竹 2022-07-06 18:48:29
我正在使用带有 maven 支持的 Intellij 启动 tomcat。一旦我添加了以下 tomcat maven 依赖项:        <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina -->    <dependency>        <groupId>org.apache.tomcat</groupId>        <artifactId>tomcat-catalina</artifactId>        <version>8.5.38</version>    </dependency>启动时,它将抛出此异常:Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;at java.lang.Class.getDeclaredFields0(Native Method)at java.lang.Class.privateGetDeclaredFields(Class.java:2583)at java.lang.Class.getDeclaredFields(Class.java:1916)at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:110)at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:269)at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89)at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67)at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:328)at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:772)at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 44 moreCaused by: java.lang.ClassNotFoundException: org.slf4j.Loggerat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)... 57 more它表明它具有类org.slf4j.Logger:如果我删除了 tomcat 依赖项,一切都会再次正常运行。
查看完整描述

3 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您需要将 .jar 文件添加到 lib 文件夹$TOMCAT/webapps/$YOUR_WEB_APP/WEB-INF/lib/



查看完整回答
反对 回复 2022-07-06
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

在这里添加答案只是因为当我试图调查一个稍微不同的问题时,这个问题是第一个相关的搜索结果:使用 Eclipse 和 Tomcat 运行应用程序 - 会出现相同的错误。我从来没有意识到 Eclipse(有时?它是我的口味吗?)不会从 Maven 生成的 WAR 文件中复制 lib 目录 - 所以即使必要的 jar 文件在 WAR 中,Eclipse 也没有使用它们 -在 Tomcat 服务器的 wtpwebapps 目录中的服务器(尤其是 Tomcat)上运行/调试时,它使用某种分解结构。因此,正如其他人在其他需要挖掘的问题中指出的那样,

PS,是的,正如其他人指出的那样,在 Eclipse 中执行 Maven -> Update Project 经常会弄乱上述配置

PPS 我很抱歉,Eclipse - 以上是因为我的 pom.xml 配置破旧 - Eclipse 在每个 Maven 期间所做的 -> 更新项目是将 pom.xml 中的任何配置复制到它自己的项目配置中 - 所以当依赖项是没有明确说要在 pom.xml 中复制,它们没有被复制(项目属性已重置)-我已按照此处的答案修复了此问题


查看完整回答
反对 回复 2022-07-06
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

如果您使用的是 Eclipse,文件.classpath需要指出 lib 路径。因此,请检查此行是否包含在我们的设置中。 <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>'


<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">

    <attributes>

        <attribute name="maven.pomderived" value="true"/>

        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

    </attributes>

</classpathentry>


查看完整回答
反对 回复 2022-07-06

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号