Java 为什么我不能设置url localhost:8080/helloworld来获取文本“hello world”?

Java 为什么我不能设置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

我构建的只是一个非常简单的springboot项目,只有一个类用于应用程序,一个类用于控制器

我只是想,每当人们访问localhost:8080/helloworld时 文字你好,世界!应该显示

然而,我得到一个错误应用程序无法启动,请查看屏幕截图和错误消息

如果我只是删除这个controller.java,它就可以编译了。所以问题一定是controller.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!";
    }

}
有人知道是什么问题吗?谢谢大家!

第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