Это мой первый код Spring Boot. К сожалению, он всегда отключается. Я ожидал, что он будет работать постоянно, чтобы мой веб-клиент мог получать данные из браузера.
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
[@localhost initial]$ java -jar build/libs/gs-spring-boot-0.1.0.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.0.RC4)
2014-03-13 09:20:24.805 INFO 14650 --- [ main] hello.SampleController : Starting SampleController on localhost.localdomain with PID 14650 (/home/xxx/dev/gs-spring-boot/initial/build/libs/gs-spring-boot-0.1.0.jar started by xxx)
2014-03-13 09:20:25.002 INFO 14650 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b9eec: startup date [Thu Mar 13 09:20:24 EDT 2014]; root of context hierarchy
2014-03-13 09:20:28.833 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Registering beans for JMX exposure on startup
2014-03-13 09:20:30.148 INFO 14650 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0
2014-03-13 09:20:30.154 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'requestMappingEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=requestMappingEndpoint]
2014-03-13 09:20:30.316 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'environmentEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=environmentEndpoint]
2014-03-13 09:20:30.335 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'healthEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=healthEndpoint]
2014-03-13 09:20:30.351 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'beansEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=beansEndpoint]
2014-03-13 09:20:30.376 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'infoEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=infoEndpoint]
2014-03-13 09:20:30.400 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'metricsEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=metricsEndpoint]
2014-03-13 09:20:30.413 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'traceEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=traceEndpoint]
2014-03-13 09:20:30.428 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'dumpEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=dumpEndpoint]
2014-03-13 09:20:30.450 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'autoConfigurationAuditEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=autoConfigurationAuditEndpoint]
2014-03-13 09:20:30.465 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'shutdownEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=shutdownEndpoint]
2014-03-13 09:20:30.548 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'configurationPropertiesReportEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=configurationPropertiesReportEndpoint]
2014-03-13 09:20:30.589 INFO 14650 --- [ main] hello.SampleController : Started SampleController in 7.396 seconds (JVM running for 9.569)
2014-03-13 09:20:30.608 INFO 14650 --- [ Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@b9eec: startup date [Thu Mar 13 09:20:24 EDT 2014]; root of context hierarchy
2014-03-13 09:20:30.610 INFO 14650 --- [ Thread-2] o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 0
2014-03-13 09:20:30.624 INFO 14650 --- [ Thread-2] o.s.b.a.e.jmx.EndpointMBeanExporter : Unregistering JMX-exposed beans on shutdown
Пожалуйста, порекомендуйте.
Спасибо
PS build.gradle это вина.
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
**exclude module: "spring-boot-starter-tomcat"**
}
Как только я снял вышеуказанную строку жирным шрифтом, все работает. Мой контекст приложения теперь правильный. Спасибо Дэйв
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.0.RC4)
2014-03-13 13:58:08.965 INFO 7307 --- [ main] hello.Application : Starting
Application on with PID 7307 (/ladev/home/xxx/dev/gs-spring-boot/initial/build/libs/gs-spring-boo
t-0.1.0.jar started by xxx)
2014-03-13 13:58:09.021 INFO 7307 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshi
ng org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@45490eb5: startup
date [Thu Mar 13 13:58:09 MDT 2014]; root of context hierarchy
2014-03-13 13:58:09.653 INFO 7307 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overridi
ng bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=fal
se; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanNam
e=org.springframework.boot.actuate.autoconfigure.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration;
factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class
path resource [org/springframework/boot/actuate/autoconfigure/ErrorMvcAutoConfiguration$WhitelabelErrorView
Configuration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3;
dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconf
igure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; in
itMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/au
toconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
java
spring
spring-boot
johnsam
источник
источник
ApplicationContext
неправильный тип (AnnotationConfigApplicationContext
), поэтому это не веб-приложение. Значение по умолчанию должно быть равно значению, которое зависит от вашего пути к классу, поэтому похоже, что оно установлено или установлено по умолчанию неправильно. Может быть, у вас естьapplication.properties
вариация или ENV, которую вы не показываете?--debug
помощью командной строки и опубликовать журналы здесь, пожалуйста?Ответы:
Решение: приложение не является веб-приложением, поскольку в нем нет встроенного контейнера (например, Tomcat) на пути к классам. Добавление одного исправило это. Если вы используете Maven , добавьте это в
pom.xml
:Для Gradle (
build.gradle
) это выглядит такисточник
Вот как вы можете это исправить:
Проверьте, нет ли у вас зависимости от spring-boot-starter-web в вашем файле pom.xml. Чтобы получить правильный файл pom.xml, воспользуйтесь этой ссылкой start.spring.io
Если у вас есть вышеуказанная зависимость, но вы все еще сталкиваетесь с проблемой, вполне возможно, что ваши встроенные jar tomcat присутствуют. Чтобы подтвердить это, запустите maven build в режиме отладки -
и искать сообщения, как -
Если такие сообщения присутствуют, очистите локальное хранилище Maven и повторите попытку -
источник
У меня была такая же проблема, но когда я удалил
это начало работать снова.
источник
Возможно, он не подходит к вашему коду, но я выяснил, есть ли у вас фрагмент кода, подобный этому:
затем просто удалите метод close (). Это исправило мою проблему! Может быть, я могу помочь кому-то с этим
источник
В моем случае проблема возникла, когда я исправил ошибку статического анализа, что возвращаемое значение метода не использовалось.
Старый рабочий код в моем Application.java был:
Новый код, который представил проблему, был:
Очевидно, что попытка с блоком ресурсов закроет контекст после запуска приложения, что приведет к выходу приложения со статусом 0. Это был случай, когда ошибка утечки ресурса, сообщаемая статическим анализом snarqube, должна игнорироваться.
источник
С помощью gradle я заменил эту строку в файле build.gradle.kts внутри блока зависимостей
с этим
и работает отлично.
источник
Я думаю, правильный ответ был: почему веб-приложение Spring Boot закрывается сразу после запуска?о том, что starter-tomcat не установлен, и если он установлен и работает через IDE, предоставленная область должна быть закомментирована. Область не создает проблему при запуске через команду. Интересно, почему.
В любом случае просто добавил мои дополнительные мысли.
источник
Просто еще одна возможность,
Я заменил
с участием
и началось без проблем
источник
эта работа с весенней загрузкой 2.0.0
замещать
с участием
источник
В моем случае я исправил эту проблему, как показано ниже:
Сначала я удалил (apache)
C:\Users\myuserId\.m2\repository\org\apache
Я добавил ниже зависимости в моем
pom.xml
файлеЯ изменил сокет по умолчанию, добавив ниже строки в файле ресурсов
..\yourprojectfolder\src\main\resourcesand\application.properties
(я создал этот файл вручную)для этого я добавил блок ниже в моем
pom.xml
нижнем<build>
разделе.Мой окончательный
pom.xml
файл выглядит какисточник
Если вы не хотите, чтобы ваша весна стала веб-приложением, просто добавьте
@EnableAsync
или@EnableScheduling
в свой стартер.источник
в моем случае у меня уже была зависимость maven от «spring-boot-starter-web», и проект запустился бы нормально без автоматической остановки, когда я запускаю его как приложение springboot из IDE . однако, когда я разверну его на K8s , приложение запустится и автоматически остановится. Поэтому я изменил свой основной класс приложения для расширения SpringBootServletInitializer, и это, похоже, исправило автоматическую остановку.
источник