Ini adalah kode Boot Musim Semi pertama saya. Sayangnya, itu selalu dimatikan. Saya mengharapkannya untuk terus berjalan sehingga klien web saya bisa mendapatkan beberapa data dari browser.
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
Mohon saran.
Terima kasih
PS build.gradle adalah kesalahannya.
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
**exclude module: "spring-boot-starter-tomcat"**
}
Begitu saya melepas garis di atas dalam huruf tebal, semuanya bekerja. Konteks aplikasi saya sekarang sudah benar. Terima kasih 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
sumber
sumber
ApplicationContext
salah ketik (AnnotationConfigApplicationContext
), jadi ini bukan webapp. Seharusnya default ke nilai yang tergantung pada classpath Anda, jadi sepertinya itu diatur atau default dengan cara yang salah. Mungkin Anda memilikiapplication.properties
atau ENV var Anda tidak ditampilkan?--debug
pada baris perintah dan posting log kembali ke sini, tolong?Jawaban:
Resolusi: aplikasi ini bukan aplikasi web karena tidak memiliki wadah yang disematkan (mis. Tomcat) di classpath. Menambahkan satu memperbaikinya. Jika Anda menggunakan Maven , tambahkan ini di
pom.xml
:Untuk Gradle (
build.gradle
) sepertinyasumber
Inilah cara Anda memperbaikinya:
Periksa apakah Anda tidak memiliki ketergantungan pada spring-boot-starter-web di file pom.xml Anda. Untuk memperbaiki file pom.xml Anda, gunakan tautan ini start.spring.io
Jika Anda memiliki ketergantungan di atas, tetapi masih menghadapi masalah, sangat mungkin bahwa toples tempel yang disematkan hadir. Untuk mengonfirmasi ini, jalankan maven build dalam mode debug -
dan cari pesan seperti -
Jika ada pesan seperti itu, bersihkan repo pakar setempat dan coba lagi -
sumber
Saya memiliki masalah yang sama tetapi ketika saya dihapus
mulai bekerja lagi.
sumber
Mungkin tidak cocok dengan kode Anda tetapi saya tahu jika Anda memiliki potongan kode seperti ini:
kemudian cukup hapus metode close (). Itu memperbaiki masalah saya! Mungkin saya bisa membantu seseorang dengan itu
sumber
Dalam kasus saya masalah diperkenalkan ketika saya memperbaiki kesalahan analisis statis bahwa nilai pengembalian metode tidak digunakan.
Kode kerja lama di Application.java saya adalah:
Kode baru yang menyebabkan masalah adalah:
Jelas, coba dengan blok sumber daya akan menutup konteks setelah memulai aplikasi yang akan menghasilkan aplikasi keluar dengan status 0. Ini adalah kasus di mana kesalahan kebocoran sumber daya yang dilaporkan oleh analisis statis snarqube harus diabaikan.
sumber
Dengan gradle, saya mengganti baris ini di file build.gradle.kts di dalam blok dependensi
dengan ini
dan bekerja dengan baik.
sumber
Saya pikir jawaban yang tepat ada di Mengapa aplikasi web Spring Boot tutup segera setelah memulai? tentang starter-tomcat tidak diatur dan jika diatur dan dijalankan melalui IDE, ruang lingkup yang disediakan harus dikomentari. Lingkup tidak membuat masalah saat menjalankan melalui perintah. Kenapa ya.
Anyways baru saja menambahkan pemikiran tambahan saya.
sumber
Hanya kemungkinan lain,
Saya diganti
dengan
dan itu dimulai tanpa masalah
sumber
ini bekerja dengan spring boot 2.0.0
menggantikan
dengan
sumber
Dalam kasus saya, saya memperbaiki masalah ini seperti di bawah ini: -
Pertama saya hapus (apache)
C:\Users\myuserId\.m2\repository\org\apache
Saya menambahkan dependensi di bawah ini di
pom.xml
file sayaSaya telah mengubah soket default dengan menambahkan baris di bawah ini dalam file sumber daya
..\yourprojectfolder\src\main\resourcesand\application.properties
(saya secara manual membuat file ini)untuk itu saya telah menambahkan blok di
pom.xml
bawah ini di<build>
bagian bawah saya .pom.xml
File akhir saya terlihat sepertisumber
Jika Anda tidak ingin menjadikan pegas sebagai aplikasi web, tambahkan saja
@EnableAsync
atau@EnableScheduling
ke Starter Andasumber
dalam kasus saya, saya sudah memiliki ketergantungan pakar untuk 'spring-boot-starter-web' dan proyek akan dimulai dengan baik tanpa berhenti secara otomatis ketika saya menjalankannya sebagai aplikasi springboot dari dalam IDE . Namun, ketika saya menyebarkannya ke K8s , aplikasi akan memulai dan berhenti otomatis segera. Jadi saya memodifikasi kelas aplikasi utama saya untuk memperpanjang SpringBootServletInitializer dan ini tampaknya telah memperbaiki penghentian otomatis.
sumber