Spring Boot 2升级java.lang.ClassNotFoundException:EmbeddedServletContainerCustomizer

Spring Boot 2升级java.lang.ClassNotFoundException:EmbeddedServletContainerCustomizer,java,spring,spring-boot,cloud-foundry,bamboo,Java,Spring,Spring Boot,Cloud Foundry,Bamboo,我最近升级到Spring Boot 2,我们的应用程序通过Bamboo部署到PCF上。构建运行良好,但在部署阶段,我收到以下错误: java.lang.ClassNotFoundException: org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer 我们没有在代码中的任何地方使用EmbeddedServletContainerCustomizer类,我不知道这是从哪里来的。想知道这是否是po

我最近升级到Spring Boot 2,我们的应用程序通过Bamboo部署到PCF上。构建运行良好,但在部署阶段,我收到以下错误:

java.lang.ClassNotFoundException: org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer
我们没有在代码中的任何地方使用
EmbeddedServletContainerCustomizer
类,我不知道这是从哪里来的。想知道这是否是pom问题吗


我在这里尝试了所有其他类似性质的问题。

org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer
已从2.X中的
spring boot
依赖项中删除。很可能您尚未完全更新依赖项,并且在构建中的某个地方存在一个引用
spring-boot-1.X
的依赖项


它在Bambol上工作的事实意味着您的CI受到了污染,不能反映部署环境。

这个问题原来是由于我们将spring应用程序打包到一个war中导致的,它需要实现
SpringBootServletInitializer
类来覆盖配置方法:

@Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(WebApplication.class);
  }

这反过来又抛出了上述错误。现在就采取步骤删除此项,并将我们的应用程序打包为jar

这似乎是最有可能的原因。你知道用这个检查依赖项的最佳方法吗?如果你使用的是Maven run
mvn dependency:tree
。格雷德尔见。您应该能够从堆栈跟踪中获取有问题的类名,然后返回到JAR。仍在努力了解我如何无法在本地生成此错误:/使用堆栈跟踪查找有问题的类和JAR。它很可能仅在CI服务器上可用。当您识别JAR时,您可以尝试按照打印类路径,以查看它为什么加载到CI中。幸运的是,异常堆栈跟踪显示了调用方类,该类试图使用Spring2.X中不再存在的类/对象类型,因为Karol Dowbecki陈述了您在PCF上使用的Java Buildpack的哪个版本?我认为在推送应用程序时应该记录它。Buildpack包含一个customiser,因此您可能需要使用它的更新版本来获得Spring Boot 2支持。Buildpack是java\u Current我们在SpringBoot 2.0 plus+PCF中面临同样的问题。有没有人找到一个有效的解决方案?请帮忙!嗨@Tunelt我在底部的答案是我们的解决方案。确保应用程序打包为jar,错误来自SpringApplicationBuilder配置方法上的覆盖。谢谢Rebecca。但是,如果有人知道如何使用此类打包war,欢迎提供信息