我使用Spring启动编写了一个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
答案 0 :(得分:20)
web application type
:在application.properties
:
spring.main.web-application-type=none
如果您使用application.yml
,请添加:
spring:
main:
web-application-type: none
*SpringBootServletInitializer*
。@SpringBootApplication
public class YourAppliationName extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(YourAppliationName.class, args);
}
}
答案 1 :(得分:8)
解决方案是:
我在IsAllChecked
文件中明确将以下属性设置为none
。
application.yml
答案 2 :(得分:5)
我的解决方案与不良依赖性有关。我有:
billing
在pom中,我必须注释掉排除项才能使其正常工作。由于某种原因,它必须寻找这个tomcat软件包。
答案 3 :(得分:3)
添加以下bean对我有用。
@Bean
public ServletWebServerFactory servletWebServerFactory() {
return new TomcatServletWebServerFactory();
}
我正在使用没有SpringApplication.run(MyApplication.class, args);
注释的@SpringBootApplication
运行非web spring应用程序。
答案 4 :(得分:3)
就我而言,该问题解决了注释spring-boot-starte-web中排除的tomcat依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- <exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions> -->
</dependency>
答案 5 :(得分:2)
您可能在项目中使用了它:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
在这种情况下,您还必须添加:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
魔术发生了:)
PS:这是因为默认情况下,Spring会默认使用 web-MVC 而不是 web-flux
答案 6 :(得分:1)
我在使用 tomcat-jasper 较新版本时遇到同样的错误
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>10.0.6</version>
</dependency>
我用稳定的旧版本替换了它,它对我来说很好用。
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>9.0.46</version>
</dependency>
答案 7 :(得分:1)
我想运行 WAR 类型的 spring boot 应用程序,当我尝试将应用程序作为 spring boot 应用程序运行时,我遇到了上述错误。因此,在 application.properties 中声明 Web 应用程序类型对我有用。 spring.main.web-application-type=none
可能的网络应用程序类型:
答案 8 :(得分:1)
我确实在IntelliJ IDEA中右键单击了我的项目,然后在Maven中->重新加载项目,问题已解决。
答案 9 :(得分:1)
类似于确保已安装org.springframework.boot:spring-boot-starter-tomcat
的解决方案,我在org.eclipse.jetty:jetty-server
中丢失了build.gradle
org.springframework.boot:spring-boot-starter-web
需要一台服务器,无论是Tomcat,Jetty还是其他服务器-它都可以编译,但没有服务器就无法运行。
答案 10 :(得分:1)
在迁移到Spring Boot时遇到了这个问题。我找到了advice to remove dependencies,它有所帮助。因此,我删除了对 jsp-api 项目的依赖。另外,还必须删除 servlet-api 依赖性。
compileOnly group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.2'
答案 11 :(得分:0)
对于我来说,我删除了tomcat依赖项中的provided
范围。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> // remove this scope
</dependency>
答案 12 :(得分:0)
我试图用Spring Boot创建一个Web应用程序,但遇到了同样的错误。 检查后,我发现我缺少依赖项。因此,请确保将以下依赖项添加到pom.xml文件中。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
答案 13 :(得分:0)
就我而言,问题是我没有在日食中单独安装Tomcat服务器。我以为Springboot会自动在其内部启动服务器。
由于我的主类扩展了SpringBootServletInitializer
并覆盖了configure
方法,所以我肯定需要在我的IDE中安装一个Tomcat服务器。
要安装,请首先下载Apachce Tomcat(在我的情况下为版本9),然后使用“服务器”标签创建服务器。
安装后,在服务器上运行主类。
Run As -> Run on Server
答案 14 :(得分:0)
就我而言,我使用的是TOMCAT 8并更新到TOMCAT 9进行了修复:
some
相关问题:
答案 15 :(得分:0)
除了其他答案中可能的解决方案之外,您的计算机上还可能以某种方式发生了Maven依赖项损坏。我在尝试运行(Web)Spring引导应用程序时遇到相同的错误,并且通过运行以下命令可以解决该问题-
File1 <- structure(list(V1 = c("AT1G01010", "AT1G01020", "AT1G01030",
"AT1G01040", "AT1G01050"), V2 = c("AT1G01010", "AT1G01020", "AT1G01030",
"AT1G01040", "AT1G01050")), class = "data.frame", row.names = c(NA,
-5L))
File2 <- structure(list(V1 = c("SAMN10267760-CAGATCAAGATGGCGT", "SAMN10267760-TAAGCGTTCATCGATG",
"SAMN10267760-CGCCAAGCAAGCGTAG", "SAMN10267760-CGTTCTGTCTGACCTC",
"SAMN10267760-GTCGTAAGTAGGGACT", "SAMN10267760-CTCGAGGCAGCGTAAG",
"SAMN10267760-GTGCGGTCACTGCCAG", "SAMN10267760-GACACGCGTTCTGAAC",
"SAMN10267760-TGGCTGGAGCCGATTT", "SAMN10267760-CAGATCAGTTCGTCTC"
)), class = "data.frame", row.names = c(NA, -10L))
File3 <- structure(list(V1 = c(2L, 4L, 5L), V2 = c(1L, 1L, 1L), V3 = c(41.409866,
6.901644, 848.9022)), class = "data.frame", row.names = c(NA,
-3L))
File4 <- data.frame(Col1=File1[File3[, 1], 1], Col2=File2[File3[, 2], 1], Col3=File3[, 3])
File4
# Col1 Col2 Col3
# 1 AT1G01020 SAMN10267760-CAGATCAAGATGGCGT 41.409866
# 2 AT1G01040 SAMN10267760-CAGATCAAGATGGCGT 6.901644
# 3 AT1G01050 SAMN10267760-CAGATCAAGATGGCGT 848.902200
之后
mvn dependency:purge-local-repository -DreResolve=true
我进入这个解决方案,研究另一个问题,由于不同的错误,Eclipse不允许我从IDE运行主应用程序类,类似于此SO线程上的错误-> The type org.springframework.context.ConfigurableApplicationContext cannot be resolved. It is indirectly referenced from required .class files >
答案 16 :(得分:0)
使用“ public static void main”注释类,例如:@SpringBootApplication
答案 17 :(得分:0)
当我尝试以胖罐而不是从我的IDE(IntelliJ)内运行Web应用程序时遇到了这个问题。
这对我有用。只需将默认配置文件添加到 application.properties 文件。
spring.profiles.active=default
如果您已经设置了其他特定的配置文件(dev / test / prod),则不必使用default。但是,如果没有,则有必要将应用程序作为胖子运行。
答案 18 :(得分:0)
如果您使用的是IntelliJ(就像我的noob-self那样),请确保“运行”设置具有Spring Boot Application和NOT Plain Application。
答案 19 :(得分:0)
我的问题与原始问题中的问题相同,只是我通过 Eclipse 而不是 cmd 运行。尝试了列出的所有解决方案,但没有奏效。然而,对我来说最终的工作解决方案是通过 cmd 运行(或者可以通过 Eclipse 类似地运行)。使用从 cmd 附加了 spring 配置的修改命令:
start java -Xms512m -Xmx1024m <and the usual parameters as needed, like PrintGC etc> -Dspring.config.location=<propertiesfiles> -jar <jar>
我想我的问题是弹簧配置没有正确加载。
答案 20 :(得分:0)
将pom.xml中的spring-boot-starter-parent升级到最新版本为我修复了它。
答案 21 :(得分:-1)
可能是您的Spring Boot启动程序类中缺少@SpringBootApplication。
@SpringBootApplication
public class LoginSecurityAppApplication {
public static void main(String[] args) {
SpringApplication.run(LoginSecurityAppApplication.class, args);
}
}
答案 22 :(得分:-2)