Java 尝试从Spring工具套件IDE重新部署项目时,8080端口已出现问题
当我试图在Spring工具套件中修改Spring项目时,我遇到了一件奇怪的事情。在第一次加载(部署)时,一切正常,应用程序在localhost:8080上编译和运行 当我更改代码内部的某些内容并尝试重新部署它(再次运行它-作为Spring Boot应用程序运行)时,我会收到错误消息 ***************************应用程序无法启动Java 尝试从Spring工具套件IDE重新部署项目时,8080端口已出现问题,java,spring,spring-mvc,tomcat,spring-boot,Java,Spring,Spring Mvc,Tomcat,Spring Boot,当我试图在Spring工具套件中修改Spring项目时,我遇到了一件奇怪的事情。在第一次加载(部署)时,一切正常,应用程序在localhost:8080上编译和运行 当我更改代码内部的某些内容并尝试重新部署它(再次运行它-作为Spring Boot应用程序运行)时,我会收到错误消息 ***************************应用程序无法启动 说明: 配置为在端口8080上侦听的Tomcat连接器无法连接 开始端口可能已在使用中,或者连接器可能已损坏 配置错误 行动: 验证连接器的配
说明: 配置为在端口8080上侦听的Tomcat连接器无法连接 开始端口可能已在使用中,或者连接器可能已损坏 配置错误 行动: 验证连接器的配置,确定并停止任何过程 正在侦听端口8080,或将此应用程序配置为侦听 在另一个港口 2016-10-19 00:01:22.615信息10988---[main] ationConfigEmbeddedWebApplicationContext:关闭 org.springframework.boot.context.embedded。AnnotationConfigEmbeddedWebApplicationContext@3023df74: 启动日期【2016年10月19日星期三00:01:19】;语境的根源 层次结构2016-10-19 00:01:22.616信息10988---[main] o、 s.j.e.a.AnnotationMBeanExporter:正在注销JMX 关闭的豆子 若我手动关闭那个端口上的进程,一切都会恢复正常,但这不是重新部署Spring应用程序的正确方法。我做错什么了吗 我正在使用::Spring Boot::(v1.4.1.RELEASE) 另外,我知道我可以设置某种热插拔机制,在我更改代码后自动重新加载页面,但现在我想先解决这个问题 感谢您提供的任何帮助或信息 我做错什么了吗 是的,你是。一个servlet容器已经在端口8080上运行,您正在尝试再次在端口8080上运行另一个servlet容器
重新启动服务器(如果STS中有此按钮)或停止并启动它这是一个典型的启动失败,因为嵌入式servlet容器的端口正在使用中 您的嵌入式tomcat容器无法启动,因为端口8080已在使用中
只需识别并停止正在侦听端口8080的进程,或配置(在您的应用程序.properties文件中)此应用程序以侦听另一个端口。您必须停止当前进程并运行新进程。在Eclipse中,您可以按此按钮重新启动应用程序:在我的示例中,由于应用程序无法访问ssl的密钥库,因此发生了错误
以root用户身份启动应用程序解决了这个问题。只需单击红色按钮停止eclipse上的所有服务,然后将应用程序作为Spring Boot应用程序重新运行,这对我来说很有效 有时甚至当我们在IDE中使用红色按钮停止运行进程时,也会出现同样的错误 通过以下步骤解决了这个问题:
netstat-ao |查找/i“侦听”
我们得到了以下消息
TCP 0.0.0.0:7981机器名称:0侦听2428
TCP 0.0.0.0:7982机器名称:0侦听2428
TCP 0.0.0.0:8080机器名称:0 12704
TCP 0.0.0.0:8500机器名称:0侦听2428
i、 e.端口号和它们正在侦听的进程IdTaskkill/F/IM 12704
(注意:提及正确的进程Id)我的问题就这样解决了,希望这有帮助 如果您在控制台上说“Embedded servlet container无法启动。端口8080已在使用”,然后转到application.properties文件并添加此属性“server.Port=8090” 实际上,spring引导的默认端口是8080,如果该端口上有其他端口,则会出现上述错误。因此,我们在application.properties文件中添加“server.port=8090”,要求spring boot在其他端口上运行。在浏览器上打开“localhost:8080”,查看此端口上运行的是什么。
我这样做了,我发现Oracle 10g XE在后台运行,所以我转到开始->服务并停止所有Oracle服务。然后我在IntelliJ上重做
mvnw spring boot:run
,它会像魔术一样运行。有两种方法可以解决这个问题。首先尝试选项1,如果不起作用,尝试选项2,问题就解决了
1) 在控制台的右上角,有一个红色按钮,用于停止已经在此端口上运行的spring boot应用程序,只需单击红色按钮即可终止
2) 如果红色按钮未激活,则需要右键单击控制台并选择terminate/disconnect all。希望这有帮助
额外提示:-如果您希望在您选择的其他端口上运行服务器,请在maven项目的资源文件夹中创建一个名为application.properties的文件,并写入服务器。port=3000要在Linux机器上的端口3000上运行应用程序,请保存bash脚本并执行它。如果要释放端口8080,请在提示时输入8080
echo "Enter port number to be closed :: "
read port
sudo kill $(sudo lsof -t -i:$port)
对于Mac用户(OS X El Capitan
):
您需要终止运行localhost:8080
的端口。为此,您需要在终端中执行两个命令:N
sudo lsof -i tcp:8080
kill -15 PID
注意PID
是由第一个命令提供的数字
第一个命令为localhost:8080
将第二个命令中的
PID
替换为第一个命令提供的PID
,以终止运行在localhost:8080
上的进程,在application.properties中创建一个简单的行作为服务器\u\p
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
sudo lsof -t -i tcp:8181 | xargs kill -9
sudo lsof -i tcp:8181
kill -9 PID
kill `lsof -i -n -P | grep TCP | grep 8080 | tr -s " " "\n" | sed -n 2p`
//open context.
ConfigurableApplicationContext appContext = SpringApplication.run(Application.class, args);
...
//in the end, close it
appContext.close();
try(ConfigurableApplicationContext appContext =
SpringApplication.run(Application.class, args))
{
// your code here
}