[英]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.