我已经使用springboot编写了一个spring批处理应用程序。当我尝试在本地系统上使用命令行和类路径运行该应用程序时,它运行良好。然而,当我试图在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
21条答案
按热度按时间ycl3bljg1#
我在intellij idea中右键单击了我的项目,然后maven->重新加载项目,问题解决了。
ryhaxcpt2#
@springbootapplication:已检查,不起作用。
pom文件中的springbootstarter站点:已检查,不工作。
从intellij ce切换到intellij ultimate,问题解决。
k4emjkb13#
我在尝试将web应用程序作为胖jar而不是从ide(intellij)中运行时遇到了这个问题。
这就是我的工作。只需将默认配置文件添加到application.properties文件。
如果已经设置了其他特定概要文件(dev/test/prod),则不必使用default。但如果您没有这样做,那么将应用程序作为胖jar运行是必要的。
pwuypxnk4#
我的问题和原来的问题一样,只是我是通过eclipse运行的,而不是cmd。尝试了所有列出的解决方案,但都不起作用。不过,我的最终解决方案是在通过cmd运行时(或者可以通过eclipse类似地运行)。使用了一个修改后的命令,命令中附加了spring config:
我想我的问题是Spring配置没有正确加载。
bksxznpy5#
在我的例子中,我使用了tomcat 8并更新到tomcat 9修复了它:
相关问题:
https://github.com/spring-projects/spring-boot/issues?q=missing+servletwebserverfactory+bean
https://github.com/spring-projects/spring-boot/issues/22013 -spring boot应用程序作为一个模块
https://github.com/spring-projects/spring-boot/issues/19141 -当SpringBootStarterWeb作为依赖项包含时,当主类扩展用@springbootapplication注解的基类时,应用程序无法加载
tzxcd3kk6#
我试图用springboot创建一个web应用程序,但我得到了相同的错误。检查之后,我发现我缺少一个依赖项。所以,一定要在pom.xml文件中添加以下依赖项。
hgb9j2n67#
至于我,我去掉了
provided
tomcat依赖中的作用域。pieyvz9o8#
升级
spring-boot-starter-parent
在pom.xml
最新的版本为我修复了它。unhi4e5o9#
如果您使用的是intellij,并且这种情况发生在您身上(就像我的noob一样),请确保run设置有spring引导应用程序,而不是普通应用程序。
emeijp4310#
除了其他答案中可能的解决方案之外,您的机器上也可能发生了maven依赖性损坏。我在尝试运行我的(web)spring启动应用程序时遇到了相同的错误,通过运行以下命令解决了这个问题-
然后
我开始研究这个解决方案的另一个问题,eclipse不允许我从ide运行主应用程序类,原因是另一个错误,类似于这个线程上的错误->类型org.springframework.context.configurableapplicationcontext无法解析。它是从必需的.class文件间接引用的
new9mtju11#
在我的例子中,问题是我的eclipse中没有单独安装tomcat服务器。我假设我的springboot会自动启动服务器。
因为我的主课
SpringBootServletInitializer
和覆盖configure
方法,我肯定需要在ide中安装tomcat服务器。要安装,首先下载apachcetomcat(在我的例子中是版本9)并使用servers选项卡创建服务器。
安装后,在服务器上运行主类。
0yycz8jy12#
案例1:
@SpringBootApplication
SpringBootStarter类中缺少注解。案例2:
对于非web应用程序,请在属性文件中禁用web应用程序类型:
在
application.properties
:如果你使用
application.yml
然后添加:对于web应用程序,在main类中扩展springbootservletinitializer。
案例3:
如果你使用
spring-boot-starter-webflux
然后再加上spring-boot-starter-web
作为依赖关系。b4lqfgs413#
类似于确保
org.springframework.boot:spring-boot-starter-tomcat
安装了,我失踪了org.eclipse.jetty:jetty-server
从我的build.gradle
org.springframework.boot:spring-boot-starter-web
需要一个服务器,不管是tomcat、jetty还是其他什么——它可以编译,但没有它就不能运行。piztneat14#
我在迁移到spring boot时遇到了这个问题。我找到了一个删除依赖项的建议,它很有帮助。所以,我删除了jspapi项目的依赖关系。此外,还必须删除servlet api依赖关系。
mo49yndu15#
添加以下bean对我有效。
我使用
SpringApplication.run(MyApplication.class, args);
没有@SpringBootApplication
注解。