简体   繁体   English

Spring Boot应用程序Tomcat服务器未运行

[英]Spring Boot Application Tomcat Server not running

I have the following code in my CourseApiApp.java file: 我的CourseApiApp.java文件中包含以下代码:

package io.myapp.hellospringboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class CourseApiApp {

    public static void main(String[] args) {

        SpringApplication.run(CourseApiApp.class, args);

    }

}

When I press the play button I see the following console messages: 当我按下播放按钮时,我看到以下控制台消息:

main] i.a.hellospringboot.CourseApiApp         : Starting CourseApiApp on johndoe-MacBook-Pro.local with PID 22730 (/Users/johndoe/Documents/workspace-sts-3.8.4.RELEASE/com.myapp.hello-spring-boot/target/classes started by john doe in /Users/johndoe/Documents/workspace-sts-3.8.4.RELEASE/com.myapp.hello-spring-boot)
2017-05-02 21:28:29.454  INFO 22730 --- [           main] i.a.hellospringboot.CourseApiApp         : No active profile set, falling back to default profiles: default
2017-05-02 21:28:29.552  INFO 22730 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@5427c60c: startup date [Tue May 02 21:28:29 CDT 2017]; root of context hierarchy
2017-05-02 21:28:30.838  INFO 22730 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2017-05-02 21:28:30.917  INFO 22730 --- [           main] i.a.hellospringboot.CourseApiApp         : Started CourseApiApp in 2.122 seconds (JVM running for 2.614)
2017-05-02 21:28:30.919  INFO 22730 --- [       Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@5427c60c: startup date [Tue May 02 21:28:29 CDT 2017]; root of context hierarchy
2017-05-02 21:28:30.920  INFO 22730 --- [       Thread-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown

UPDATE: Here is the POM.xml file: 更新:这是POM.xml文件:

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

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

    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>

And my GreetingController.java file: 还有我的GreetingController.java文件:

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    @RequestMapping("/hello/{name}")
      String hello(@PathVariable String name) {
        return "Hello, " + name + "!";
      }

}

The root cause was a corrupt jar in the maven cache. 根本原因是Maven缓存中的jar损坏。 Deleting ~/.m2/repository solved the issue. 删除~/.m2/repository解决了此问题。

Another option would have been to run mvn dependency:purge-local-repository 另一个选择是运行mvn dependency:purge-local-repository

Please delete the files in .m2 repository . 请删除.m2 repository的文件。
Mainly delete the files from the following location: 主要从以下位置删除文件:
C:\\Users\\{UserName}\\.m2\\repository\\org\\apache

Again build application by updating the POM file and issue gets resolved. 再次通过更新POM文件来构建应用程序,问题得到解决。

You must add a dependency to file pom.xml : 您必须向文件pom.xml添加依赖项:

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

I faced the same issue due to corrupt jar files so I decided to use latest spring boot dependencies and its worked fine. 由于jar文件损坏,我遇到了同样的问题,因此我决定使用最新的spring boot依赖项,并且它工作正常。 All you need to update your POM file and build again. 您需要更新POM文件并重新构建。

<?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>io.javabrains.springbootquickstart</groupId>
<artifactId>course.api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>springbootapi</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

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

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

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

This almost drove me nuts. 这差点让我发疯。 Well, looking at @PhilWebb's comment above: 好吧,看看上面的@PhilWebb的评论:

That either means your classpath is wrong (no Tomcat) or you have a property set that's disabling web support. 这要么意味着您的类路径错误(没有Tomcat),要么您的属性集禁用了Web支持。

I had to go back to my Application class and discovered I was doing this: 我不得不回到我的Application类,发现我正在这样做:

 public static void main(String[] args) {


        new SpringApplicationBuilder(OasisEstoreManagerApiApplication.class)
                .web(WebApplicationType.NONE)
                .run(args);
    }

I had set the WebApplicationType to NONE 我已经将WebApplicationType设置为NONE

I changed it to WebApplicationType.SERVLET and it worked. 我将其更改为WebApplicationType.SERVLET并成功运行。

This was after I had tried everything including deleting the .m2 directory. 这是在我尝试了所有操作(包括删除.m2目录)之后。

Hope this helps someone. 希望这对某人有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM