it-swarm.com.de

ApplicationContextException: ServletWebServerApplicationContext kann aufgrund fehlender ServletWebServerFactory-Bean nicht gestartet werden

Ich habe eine Spring-Batch-Anwendung mit Spring Boot geschrieben. Wenn ich versuche, diese Anwendung mit der Befehlszeile und dem Klassenpfad auf meinem lokalen System auszuführen, läuft sie einwandfrei. Wenn ich jedoch versuchte, es auf einem Linux-Server auszuführen, gibt es folgende Ausnahme

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

Im Folgenden ist die Art, wie ich es leite:

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
8
Vijayant Bhatia

Die Lösung ist:

Ich habe die folgende Eigenschaft explizit auf none in der application.yml-Datei gesetzt.

spring:
  main:
    web-application-type: none
5
Vijayant Bhatia

Deaktivieren Sie für Nicht-Webanwendungen web application type in der Eigenschaftendatei:

Im application.properties:

spring.main.web-application-type=none

Wenn du benutzt application.yml dann füge hinzu:

  spring:
    main:
      web-application-type: none

Erweitert für Webanwendungen *SpringBootServletInitializer* in der Hauptklasse.

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

Dieses Problem hatte ich während der Migration zu Spring Boot. Ich habe einen Rat gefunden, um Abhängigkeiten zu entfernen und es hat geholfen. Also entfernte ich die Abhängigkeit für jsp-api, die Project hatte. Die Abhängigkeit von servlet-api muss ebenfalls entfernt werden.

compileOnly group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.2' 
0
Evgeniy

Vermutlich fehlt Ihnen @SpringBootApplication in Ihrer Spring Boot Starter-Klasse.

@SpringBootApplication
public class LoginSecurityAppApplication {

    public static void main(String[] args) {
        SpringApplication.run(LoginSecurityAppApplication.class, args);
    }

}
0
vishal thakur

Das Aktualisieren von Spring-Boot-Starter-Parent in pom.xml auf die neueste Version hat es für mich behoben.

0
Michael

Beschriften Sie die Klasse mit 'public static void main', zum Beispiel mit: @SpringBootApplication

0

Dieses Problem ist aufgetreten, als ich versuche, meine Webanwendung als fat jar auszuführen, und nicht aus meinem IDE (IntelliJ).

Das hat bei mir funktioniert. Fügen Sie einfach ein Standardprofil zur Datei application.properties hinzu.

spring.profiles.active=default

Sie müssen default nicht verwenden, wenn Sie bereits andere spezifische Profile (dev/test/prod) eingerichtet haben. Wenn dies nicht der Fall ist, ist es notwendig, die Anwendung als fettes Gefäß auszuführen.

0
NemraOx