Dies ist mein erster Spring Boot Code. Leider wird es immer heruntergefahren. Ich hatte erwartet, dass es kontinuierlich ausgeführt wird, damit mein Webclient einige Daten vom Browser abrufen kann.
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
Bitte beraten.
Vielen Dank
PS build.gradle ist der Fehler.
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
**exclude module: "spring-boot-starter-tomcat"**
}
Sobald ich die obige Zeile fett abgenommen habe, funktioniert alles. Mein Anwendungskontext ist jetzt korrekt. Danke Dave
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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
quelle
quelle
ApplicationContext
Typ ist falsch (AnnotationConfigApplicationContext
), es handelt sich also nicht um eine Webanwendung. Es sollte standardmäßig ein Wert verwendet werden, der von Ihrem Klassenpfad abhängt. Es sieht also so aus, als würde dieser Wert falsch eingestellt oder voreingestellt. Vielleicht haben Sie eineapplication.properties
oder eine ENV-Variable, die Sie nicht anzeigen?--debug
in der Befehlszeile ausführen und die Protokolle bitte hierher zurückschicken?Antworten:
Lösung: Die App ist keine Webanwendung, da der Klassenpfad keinen eingebetteten Container (z. B. Tomcat) enthält. Durch Hinzufügen eines wurde das Problem behoben. Wenn Sie Maven verwenden , fügen Sie dies hinzu in
pom.xml
:Für Gradle (
build.gradle
) sieht es so ausquelle
So können Sie das Problem beheben:
Überprüfen Sie, ob Sie in Ihrer pom.xml-Datei keine Abhängigkeit vom Spring-Boot-Starter-Web haben. Verwenden Sie diesen Link start.spring.io, um Ihre pom.xml-Datei richtig zu machen
Wenn Sie über die Abhängigkeit hinausgehen, das Problem jedoch weiterhin besteht, ist es sehr wahrscheinlich, dass Ihre eingebetteten Tomcat-Gläser vorhanden sind. Um dies zu bestätigen, führen Sie maven build im Debug-Modus aus -
und suchen Sie nach Nachrichten wie -
Wenn solche Nachrichten vorhanden sind, löschen Sie Ihr lokales Maven-Repo und versuchen Sie es erneut -
quelle
Ich hatte das gleiche Problem, aber als ich entfernte
es fing wieder an zu arbeiten.
quelle
Vielleicht passt es nicht zu Ihrem Code, aber ich habe herausgefunden, ob Sie ein Code-Snippet wie dieses haben:
Entfernen Sie dann einfach die Methode close (). Das hat mein Problem behoben! Vielleicht kann ich jemandem dabei helfen
quelle
In meinem Fall wurde das Problem eingeführt, als ich einen statischen Analysefehler behoben habe, bei dem der Rückgabewert einer Methode nicht verwendet wurde.
Alter Arbeitscode in meiner Application.java war:
Neuer Code, der das Problem einführte, war:
Offensichtlich schließt der Versuch mit Ressourcenblock den Kontext nach dem Starten der Anwendung, was dazu führt, dass die Anwendung mit dem Status 0 beendet wird. In diesem Fall sollte der durch die statische Analyse von snarqube gemeldete Ressourcenleckfehler ignoriert werden.
quelle
Mit gradle habe ich diese Zeile in der Datei build.gradle.kts im Abhängigkeitsblock ersetzt
mit diesem
und funktioniert gut.
quelle
Ich denke, die richtige Antwort war: Warum wird die Spring Boot-Webanwendung sofort nach dem Start geschlossen? Wenn der Starter-Tomcat nicht festgelegt ist und wenn er festgelegt ist und über die IDE ausgeführt wird, sollte der bereitgestellte Bereich kommentiert werden. Der Bereich verursacht kein Problem, während der Befehl ausgeführt wird. Ich wundere mich warum.
Sowieso fügte gerade meine zusätzlichen Gedanken hinzu.
quelle
Nur eine andere Möglichkeit,
ich ersetzte
mit
und es begann ohne Probleme
quelle
Diese Arbeit mit Spring Boot 2.0.0
ersetzen
mit
quelle
In meinem Fall habe ich dieses Problem wie folgt behoben: -
Zuerst habe ich entfernt (Apache)
C:\Users\myuserId\.m2\repository\org\apache
Ich habe unten Abhängigkeiten in meine
pom.xml
Datei eingefügtIch habe den Standard-Socket geändert, indem ich die folgenden Zeilen in die Ressourcendatei eingefügt habe
..\yourprojectfolder\src\main\resourcesand\application.properties
(ich habe diese Datei manuell erstellt).Dafür habe ich unten Block in meinem hinzugefügt
pom.xml
unter<build>
Abschnitt.Meine endgültige
pom.xml
Datei sieht aus wiequelle
Wenn Sie Ihren Frühling nicht zu einer Webanwendung machen möchten, fügen Sie einfach
@EnableAsync
oder@EnableScheduling
zu Ihrem Starter hinzuquelle
In meinem Fall hatte ich bereits die Maven-Abhängigkeit von 'Spring-Boot-Starter-Web' und das Projekt würde ohne automatisches Stoppen gut starten, wenn ich es als Springboot-App aus der IDE heraus ausführen würde . Wenn ich es jedoch auf K8s bereitstelle , wird die App sofort gestartet und automatisch gestoppt. Also habe ich meine Haupt-App-Klasse geändert, um SpringBootServletInitializer zu erweitern, und dies scheint das automatische Stoppen behoben zu haben.
quelle