Ответ 1
Решение:
Я явно устанавливаю свойство below в none
в файле application.yml
.
spring:
main:
web-application-type: none
Я написал весеннее пакетное приложение, используя Spring boot. Когда я пытаюсь запустить это приложение с помощью командной строки и classpath в моей локальной системе, он работает нормально. Однако, когда я пытался запустить его на сервере 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
Решение:
Я явно устанавливаю свойство below в none
в файле application.yml
.
spring:
main:
web-application-type: none
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);
}
}
Возможно, вы пропустили @SpringBootApplication в своем классе начальной загрузки.
@SpringBootApplication
public class LoginSecurityAppApplication {
public static void main(String[] args) {
SpringApplication.run(LoginSecurityAppApplication.class, args);
}
}
У меня была эта проблема при переходе на Spring Boot. Я нашел совет, чтобы удалить зависимости, и это помогло. Итак, я удалил зависимость для проекта jsp-api. Кроме того, зависимость servlet-api также должна быть удалена.
compileOnly group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.2'
Обновление родительского родителя-стартера в pom.xml до последней версии исправил его для меня.
Класс аннотации с 'public static void main', например: @SpringBootApplication
Вы, вероятно, используете это в своем проекте:
<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>
и волшебство случается :)
Я столкнулся с этой проблемой, когда пытался запустить свое веб-приложение в виде толстой фляги, а не изнутри моей IDE (IntelliJ).
Это то, что сработало для меня. Просто добавьте профиль по умолчанию в файл application.properties.
spring.profiles.active=default
Вам не нужно использовать значение по умолчанию, если вы уже настроили другие конкретные профили (dev/test/prod). Но если у вас его нет, необходимо запустить приложение в виде полной банки.