无法启动Spring启动应用程序NoClassDefFoundError

时间:2018-03-08 19:38:34

标签: spring spring-boot spring-boot-starter

我已将spring-boot-starter-parent从1.4.3更改为1.5.4

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
    </parent>

这是我的java应用程序文件

 @SpringBootApplication
    @ComponentScan("com.test")
    @EnableCaching
    @EnableAsync
    @EnableAspectJAutoProxy
    @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, WebMvcAutoConfiguration.class })
public class Application {

当我启动服务器时,它会抛出以下错误。根据依赖关系,它应该照顾依赖的jar,如spring-boot

感谢任何帮助。

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tomcatEmbeddedServletContainerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration$EmbeddedTomcat.class]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/boot/context/embedded/ErrorPage
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization(EmbeddedServletContainerCustomizerBeanPostProcessor.java:73)
    at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization(EmbeddedServletContainerCustomizerBeanPostProcessor.java:59)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1581)

2 个答案:

答案 0 :(得分:1)

customize com.xyz.asr.autoconfigure.asr.tomcat.AsrEmbeddedTomcatCustomizer方法中的某些代码指的是类org.springframework.boot.context.embedded.ErrorPage。 Spring Boot 1.5中不存在该类。 ErrorPage的正确完全限定名称为org.springframework.boot.web.servlet.ErrorPage

需要更新

AsrEmbeddedTomcatCustomizer以使用org.springframework.boot.web.servlet.ErrorPage

答案 1 :(得分:0)

问题在于Spring版本。

由于春季启动版本1.5.4和1.5.2在其中一个子项目中混淆了。问题9543是为它创建的。

从POM文件中删除spring-web依赖项,并将spring-boot-starter-web放入POM中。