web-dev-qa-db-ja.com

ApplicationContextException:ServletWebServerFactory Beanが見つからないため、ServletWebServerApplicationContextを起動できません

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

解決策は次のとおりです。

application.ymlファイルで以下のプロパティをnoneに明示的に設定しました。

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

非Webアプリケーションの場合、プロパティファイルでweb application typeを無効にします。

application.properties ::

spring.main.web-application-type=none

application.ymlを使用する場合は、次を追加します。

  spring:
    main:
      web-application-type: none

Webアプリケーションの場合、メインクラスの*SpringBootServletInitializer*を拡張します。

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

おそらく、スプリングブートスタータークラスに@SpringBootApplicationがありません。

@SpringBootApplication
public class LoginSecurityAppApplication {

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

}
7
vishal thakur

Spring Bootへの移行中にこの問題が発生しました。 依存関係を削除するアドバイス が見つかりました。そこで、jsp-apiProjectの依存関係を削除しました。また、servlet-api依存関係も同様に削除する必要があります。

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

Pom.xmlのspring-boot-starter-parentを最新バージョンにアップグレードすると、修正されました。

0
Michael

クラスに「public static void main」の注釈を付けます。例:@SpringBootApplication

0

IDE(IntelliJ)内からではなくfat jarとしてWebアプリケーションを実行しようとすると、この問題が発生しました。

これは私のために働いたものです。デフォルトのプロファイルをapplication.propertiesファイルに追加するだけです。

spring.profiles.active=default

他の特定のプロファイル(dev/test/prod)を既に設定している場合は、デフォルトを使用する必要はありません。ただし、アプリケーションをファットjarとして実行するには、これが必要です。

0
NemraOx