2016-09-07 179 views
7

我想構建一個簡單的SpringBoot應用程序。當我開始運行後,我的春天啓動應用程序就立即關機,下面是控制檯日誌:啓動後彈出啓動應用程序立即啓動

. ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
:: Spring Boot :: (v1.4.1.BUILD-SNAPSHOT) 

2016-09-06 18:02:35.152 INFO 22216 --- [   main] com.example.SpringBootDemo1Application : Starting SpringBootDemo1Application on IN-FMCN882 with PID 22216 (E:\workspace\springBoot\SpringBootDemo1\target\classes started by Rahul.Tyagi in E:\workspace\springBoot\SpringBootDemo1) 
2016-09-06 18:02:35.158 INFO 22216 --- [   main] com.example.SpringBootDemo1Application : No active profile set, falling back to default profiles: default 
2016-09-06 18:02:35.244 INFO 22216 --- [   main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]14dd9eb7: startup date [Tue Sep 06 18:02:35 IST 2016]; root of context hierarchy 
2016-09-06 18:02:36.527 INFO 22216 --- [   main] o.s.j.e.a.AnnotationMBeanExporter  : Registering beans for JMX exposure on startup 
2016-09-06 18:02:36.546 INFO 22216 --- [   main] com.example.SpringBootDemo1Application : Started SpringBootDemo1Application in 1.781 seconds (JVM running for 2.376) 
2016-09-06 18:02:36.548 INFO 22216 --- [  Thread-1] s.c.a.AnnotationConfigApplicationContext : Closing org.spring[email protected]14dd9eb7: startup date [Tue Sep 06 18:02:35 IST 2016]; root of context hierarchy 
2016-09-06 18:02:36.550 INFO 22216 --- [  Thread-1] o.s.j.e.a.AnnotationMBeanExporter  : Unregistering JMX-exposed beans on shutdown 

下面是我的代碼:

SpringBootDemo1Application.java

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 
@Controller 
public class SpringBootDemo1Application { 


    @ResponseBody 
    @RequestMapping("/") 
    public String entry(){ 
     return "My spring boot application"; 
    } 

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

POM。 xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.1.BUILD-SNAPSHOT</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

我想讓服務器保持運行,以便客戶端能夠響應它。 請建議。

+0

難道您可以嘗試使用適當的發行版本?1.4.0.RELEASE用於spring引導啓動器? –

+1

您也可以嘗試執行命令「mvn dependency:tree」並驗證項目中是否存在tomcat依賴項。 –

+0

您是如何運行應用程序? – kuhajeyan

回答

5

我能想到的唯一可能的解釋是tomcat嵌入式jar沒有包含在dependencies/jar中。既然你已經定義了「spring-boot-starter-web」的依賴關係,它也應該有傳遞性地拉動嵌入的tomcat依賴關係。但不知何故,它被排除在外。

要嘗試的東西。

  1. 執行「MVN依賴:樹」,並檢查是否tomcat的依賴關係存在,並在「編譯」範圍
  2. 改變彈簧開機啓動版本1.4.0.RELEASE。
+0

執行「mvn dependency:tree」命令之前和之後的tomcat依賴關係 –

+0

更改後spring啓動器版本爲1.4.0.RELEASE,它開始顯示編譯錯誤「無法解析類ComponentScan,組件,配置」。 –

+0

執行「mvn clean install」,以便Maven爲新版本下載所需的jar包。如果錯誤仍然存​​在,您是否可以將導入語句粘貼到您的類中。 –

0

如果我們不使用.RELEASE版本的spring,我們需要在我們的pom.xml文件中添加下面的倉庫。

我們可以使用命令「mvn spring-boot:run」從命令行運行我們的spring應用程序。

<!-- (you don't need this if you are using a .RELEASE version) --> 
<repositories> 
     <repository> 
      <id>spring-snapshots</id> 
      <url>http://repo.spring.io/snapshot</url> 
      <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
     <repository> 
      <id>spring-milestones</id> 
      <url>http://repo.spring.io/milestone</url> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-snapshots</id> 
      <url>http://repo.spring.io/snapshot</url> 
     </pluginRepository> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <url>http://repo.spring.io/milestone</url> 
     </pluginRepository> 
    </pluginRepositories> 
0

什麼解決了我在更新pom.xml中的「父」引用。

這是我工作的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.boot</groupId> 
<artifactId>project-boot</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.1.RELEASE</version> 
</parent> 

<name>project-boot</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
</dependencies> 

0

它工作時,我改變了彈簧引導版本如下:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.RELEASE</version> 
    </parent> 
3

嘗試在位於application.properties文件中添加server.port=someAvailablePortNumber 「資源」文件夾。

我也面臨同樣的問題。嘗試了很多pom.xml文件中提出的修改,但沒有爲我工作。在我的情況下,端口8080不可用,所以它的應用程序無法使用默認端口啓動tomcat(即:8080),導致它立即關閉。

更改端口號有助於啓動tomcat和應用程序開始工作。希望它有幫助:)

0

在你的主函數「SpringApplication.run(Main.class,args.close());」不應該靠近,它應該像「SpringApplication.run(Main。類,參數);」

例:

@SpringBootApplication 
public class Main{ 
    public static void main(String[] args) { 
    SpringApplication.run(Main.class, args); 
    } 
} 
0

檢查你的日誌的配置,也許你想將日誌保存到文件夾,無法創建

<appender name="allFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>/var/log/app/all.log</file> 
     ... 
</appender>