Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringBoot希望我启动服务器,因为我在类路径上有servlet_Java_Spring_Spring Boot - Fatal编程技术网

Java SpringBoot希望我启动服务器,因为我在类路径上有servlet

Java SpringBoot希望我启动服务器,因为我在类路径上有servlet,java,spring,spring-boot,Java,Spring,Spring Boot,今天我面临以下问题: 不幸的是,我的一个核心依赖项将servlet.api拉到了我的类路径。正因为如此,我的spring boot认为我自动成为了一个服务器,而我是一个桌面应用程序,不想在没有一些需要创建web的工厂的情况下启动 它是这样说的: Caused by: org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to m

今天我面临以下问题:

不幸的是,我的一个核心依赖项将servlet.api拉到了我的类路径。正因为如此,我的spring boot认为我自动成为了一个服务器,而我是一个桌面应用程序,不想在没有一些需要创建web的工厂的情况下启动

它是这样说的:

Caused by: org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
不幸的是,我无法摆脱这种依赖关系,而对于他们来说,修复其可传递依赖关系可能需要一些时间

这附近有没有黑客


谢谢

您缺少一些作为web应用程序运行所需的JAR文件。请确保已包含spring boot starter web.jar文件。 如果我们使用的是maven,请按照以下步骤操作

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.3.2.RELEASE</version>
</dependency>

org.springframework.boot
SpringBootStarterWeb
1.3.2.1发布

您缺少一些作为web应用程序运行所需的JAR文件。请确保已包含spring boot starter web.jar文件。 如果我们使用的是maven,请按照以下步骤操作

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.3.2.RELEASE</version>
</dependency>

org.springframework.boot
SpringBootStarterWeb
1.3.2.1发布

如果使用Spring boot 2.x,可以通过将
Spring.main.web应用程序类型
属性设置为
none
来禁用web应用程序:

spring.main.web-application-type=none

如果您使用的是Spring boot 1.x,则可以设置
Spring.main.web环境
属性:

spring.main.web-environment=false
这一变化的原因是,SpringBoot2.x现在可以配置为反应式、基于servlet或无,而SpringBoot1.x则是基于servlet或无(因此可能只是一个布尔值)


或者,您也可以使用(和在注释中)提到的自定义
SpringApplication
实例:

并非所有Spring应用程序都必须是web应用程序(或web服务)。如果您想在
main
方法中执行一些代码,同时还要引导一个Spring应用程序来设置要使用的基础结构,那么可以使用Spring Boot的
SpringApplication
功能。
SpringApplication
根据是否需要web应用程序,更改其
ApplicationContext
类。要帮助它,您可以做的第一件事是将与服务器相关的依赖项(例如servlet API)从类路径中移除。如果您不能这样做(例如,您从同一个代码库运行两个应用程序),那么您可以在
SpringApplication
实例上显式调用
setWebApplicationType(WebApplicationType.NONE)
,或者设置
applicationContextClass
属性(通过Java API或使用外部属性)


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

spring.main.web-application-type=none

如果您使用的是Spring boot 1.x,则可以设置
Spring.main.web环境
属性:

spring.main.web-environment=false
这一变化的原因是,SpringBoot2.x现在可以配置为反应式、基于servlet或无,而SpringBoot1.x则是基于servlet或无(因此可能只是一个布尔值)


或者,您也可以使用(和在注释中)提到的自定义
SpringApplication
实例:

并非所有Spring应用程序都必须是web应用程序(或web服务)。如果您想在
main
方法中执行一些代码,同时还要引导一个Spring应用程序来设置要使用的基础结构,那么可以使用Spring Boot的
SpringApplication
功能。
SpringApplication
根据是否需要web应用程序,更改其
ApplicationContext
类。要帮助它,您可以做的第一件事是将与服务器相关的依赖项(例如servlet API)从类路径中移除。如果您不能这样做(例如,您从同一个代码库运行两个应用程序),那么您可以在
SpringApplication
实例上显式调用
setWebApplicationType(WebApplicationType.NONE)
,或者设置
applicationContextClass
属性(通过Java API或使用外部属性)


假设您使用的是Maven,您不能排除
pom.xml
中的依赖项吗?如果没有,您必须在您的
SpringApplication
上设置
setWebApplicationType
,正如JB Nizet发布的URL中提到的那样。您可以在这里发布pom.xml内容吗@DreandoBrajesh-我不能在这里发布代码。Thoomas——不幸的是,当我排除某些东西时,这个库就不起作用了。JBNizet-似乎你是对的,感谢你使用的是Maven,难道你不能排除
pom.xml
中的依赖关系吗?如果没有,您必须在您的
SpringApplication
上设置
setWebApplicationType
,正如JB Nizet发布的URL中提到的那样。您可以在这里发布pom.xml内容吗@DreandoBrajesh-我不能在这里发布代码。Thoomas——不幸的是,当我排除某些东西时,这个库就不起作用了。看起来你是对的,谢谢。她不想启动web服务器。他不想启动web服务器。