ApplicationContextException:由于缺少 ServletWebServerFactory bean,无法启动 ServletWebServerApplicationContext

新手上路,请多包涵

我使用 Spring Boot 编写了一个 Spring Batch 应用程序。当我尝试在本地系统上使用命令行和类路径运行该应用程序时,它运行良好。但是,当我尝试在 linux 服务器上运行它时,它给了我以下异常

Unable to start web server; nested exception is
org.springframework.context.ApplicationContextException:
Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

以下是我运行它的方式:

 java -cp jarFileName.jar; lib\* -Dlogging.level.org.springframework=DEBUG -Dspring.profiles.active=dev -Dspring.batch.job.names=abcBatchJob com.aa.bb.StartSpringBatch > somelogs.log

原文由 Vijayant Bhatia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

解决方案是:

我在 application.yml 文件中明确将以下属性设置为 none --- 。

 spring:
  main:
    web-application-type: none

原文由 Vijayant Bhatia 发布,翻译遵循 CC BY-SA 4.0 许可协议

情况1:

@SpringBootApplication Spring Boot Starter 类中缺少注释。

案例二:

对于非 Web 应用程序,请在属性文件中禁用 web application type

application.properties

 spring.main.web-application-type=none

如果您使用 application.yml 然后添加:

   spring:
    main:
      web-application-type: none

对于 Web 应用程序,在主类中扩展 *SpringBootServletInitializer*

 @SpringBootApplication
public class YourAppliationName extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(YourAppliationName.class, args);
    }
}

案例3:

如果您使用 spring-boot-starter-webflux 则还要添加 spring-boot-starter-web 作为依赖项。

原文由 GolamMazid Sajib 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏