Java 为什么我不能设置url localhost:8080/helloworld来获取文本“hello world”?
我构建的只是一个非常简单的springboot项目,只有一个类用于应用程序,一个类用于控制器 我只是想,每当人们访问localhost:8080/helloworld时 文字你好,世界!应该显示 然而,我得到一个错误应用程序无法启动,请查看屏幕截图和错误消息 如果我只是删除这个controller.java,它就可以编译了。所以问题一定是controller.javaJava 为什么我不能设置url localhost:8080/helloworld来获取文本“hello world”?,java,spring-boot,Java,Spring Boot,我构建的只是一个非常简单的springboot项目,只有一个类用于应用程序,一个类用于控制器 我只是想,每当人们访问localhost:8080/helloworld时 文字你好,世界!应该显示 然而,我得到一个错误应用程序无法启动,请查看屏幕截图和错误消息 如果我只是删除这个controller.java,它就可以编译了。所以问题一定是controller.java package com.zi.sbprojects.helloworld; import org.springframewor
package com.zi.sbprojects.helloworld;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ControllerHelloWorld {
@RequestMapping("/helloworld")
public String sayHelloWorld() {
return "Hello World!";
}
}
有人知道是什么问题吗?谢谢大家!
第1部分:myApplication.java
package com.zi.sbprojects;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApiApp {
public static void main(String[] args) {
SpringApplication.run(ApiApp.class, args);
}
}
第2部分:myController.java
package com.zi.sbprojects.helloworld;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ControllerHelloWorld {
@RequestMapping("/helloworld")
public String sayHelloWorld() {
return "Hello World!";
}
}
第3部分: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.zi.sbprojects</groupId>
<artifactId>sb-firstproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>My First Spring Boot Project</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.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>
</project>
这个错误包含了您所需要的一切。您已经有一个应用程序在与spring引导应用程序相同的端口上运行
故障排除步骤。
在OSX上,可以运行以下命令:
lsof -i :8080
这将为您提供当前正在运行的绑定到端口8080的进程的列表。我在下面几行提供了一些信息,这可能会对您有所帮助 根据上述异常消息 原因:java.net.BindException:地址已在使用中:bind 在sun.nio.ch.Net.bind0Native Method~[na:1.8.0_92] 在sun.nio.ch.Net.bindUnknown Source~[na:1.8.0_92] 这意味着,spring boot中默认的端口8080已被占用。这意味着另一个应用程序正在同一端口8080中运行。要解决此问题,可以参考以下方法之一 您可以在spring引导应用程序的application.properties文件中配置server.port=8090。您可以根据方便程度提及端口号。 仅在eclipse或intellij Idea中的VM参数中配置-Dserver.port=8090 如果您有springboot胖jar,那么可以使用命令java-jarspringboot.jar-server.port=8090运行。我把它命名为springboot.jar,您可以为springboot应用程序命名。
我注意到两件事 您的地址已在使用中。 解决方案: 通过在application.properties中将端口指定为server.port=8081或任何其他可用端口来更改端口,或如christopher所述停止当前进程 您正在从控制器方法返回字符串。
如果您希望页面在浏览器上显示Hello world,请使用@ResponseBody作为方法。以上所有答案都很好。还有一个原因:可能是您已经启动了一次应用程序,但没有停止它,更改了某些内容并试图再次启动它。检查是否有Java进程正在运行,如果看到以前启动的应用程序,请将其杀死。在Windows上,运行netstat-ano | findstr 8080。最后一个值是进程ID。谢谢!我试着点击红色按钮来终止运行进程,然后按绿色按钮运行,成功了。但是非常感谢您提供的故障排除方法!如果你觉得这个答案有帮助,请接受它。另一个答案也是令人满意的,可以选择其中一个:
lsof -i :8080