gpt4 book ai didi

java - spring boot 希望我启动服务器,因为我的类路径上有 servlet

转载 作者:行者123 更新时间:2023-12-02 02:03:00 25 4
gpt4 key购买 nike

今天我遇到了以下问题:

不幸的是,我的核心依赖项之一将 servlet.api 拉到了我的类路径中。因此,我的 spring-boot 认为我自动是一个服务器,而我是一个桌面应用程序,并且不想在没有一些网络所需的工厂的情况下启动。

这就是它所说的:

Caused by: org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

不幸的是,我无法摆脱这种依赖关系,并且修复它们的传递依赖关系可能需要一些时间。

有什么技巧可以解决这个问题吗?

谢谢

最佳答案

如果您使用的是 Spring boot 2.x,则可以通过将 spring.main.web-application-type 属性设置为 none 来禁用 Web 应用程序:

spring.main.web-application-type=none

如果您使用的是 Spring boot 1.x,您可以设置 spring.main.web-environment 属性:

spring.main.web-environment=false

这种变化的原因是因为 Spring boot 2.x 现在可以配置为响应式、基于 servlet 或无,而在 Spring boot 1.x 中,它可以配置为基于 servlet 或无(所以它可能只是一个 boolean 值)。

<小时/>

或者,您也可以使用 the documentation 中提到的自定义 SpringApplication 实例。 (以及在评论中):

public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.web(WebApplicationType.NONE) // Use this for Spring boot 2.x
.web(false) // Use this for Spring boot 1.x
.run(args);
}

Not all Spring applications have to be web applications (or web services). If you want to execute some code in a main method but also bootstrap a Spring application to set up the infrastructure to use, you can use the SpringApplication features of Spring Boot. A SpringApplication changes its ApplicationContext class, depending on whether it thinks it needs a web application or not. The first thing you can do to help it is to leave server-related dependencies (e.g. servlet API) off the classpath. If you cannot do that (for example, you run two applications from the same code base) then you can explicitly call setWebApplicationType(WebApplicationType.NONE) on your SpringApplication instance or set the applicationContextClass property (through the Java API or with external properties).

关于java - spring boot 希望我启动服务器,因为我的类路径上有 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51278226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com