美文网首页
SpringBoot项目启动报错--ClassNotFoundE

SpringBoot项目启动报错--ClassNotFoundE

作者: wyn_做自己 | 来源:发表于2021-12-09 14:52 被阅读0次

    今日份鸡汤:做自己的太阳,与山川湖海为伴,热爱生活,自信勇敢,保持善良,勇往直前!

    很久前弄的一个SpringBoot小demo,今天想要验证一个功能的时候,突然发现启动不了,日志信息如下:

    2021-12-09 11:06:32.782  WARN 18820 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageConverters' defined in class path resource [org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.http.HttpMessageConverters]: Factory method 'messageConverters' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.getPartConverters()Ljava/util/List;
    2021-12-09 11:06:32.790  INFO 18820 --- [           main] ConditionEvaluationReportLoggingListener : 
    
    Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
    

    除了上述这种,也有可能下面这种:

    Caused by: java.lang.NoClassDefFoundError: org/springframework/web/util/pattern/PathPatternParser
        at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_131]
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_131]
        at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_131]
        at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.12.jar:5.3.12]
        ... 23 common frames omitted
    Caused by: java.lang.ClassNotFoundException: org.springframework.web.util.pattern.PathPatternParser
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_131]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_131]
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) ~[na:1.8.0_131]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_131]
        ... 27 common frames omitted
    

    其实类似这种的大部分原因都是JAR包错误或JAR包冲突,那就去看看pom.xml 中的配置,看到了如下依赖:

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.3.25.RELEASE</version>
            </dependency>
    

    好了问题就在这里,SpringBoot 2.5.6 版本默认使用Spring的版本<spring-framework.version>5.3.12</spring-framework.version>,
    至此就发现这个问题就是JAR包冲突导致的,只需要把pom中这个Spring依赖去掉,刷新一下maven依赖,重新启动项目就好了。

    如果想查看SpringBoot中依赖的相关组件的默认版本,可以直接看这篇:SpringBoot项目查看(Spring、SpringBoot)默认版本配置

    相关文章

      网友评论

          本文标题:SpringBoot项目启动报错--ClassNotFoundE

          本文链接:https://www.haomeiwen.com/subject/ukyffrtx.html