我在启用调试模式的情况下运行Spring Boot应用程序。像:
mvn -P dev spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
我可以在没有任何问题的情况下调试应用程序。但是,在停止(ctrl + c)并尝试再次启动后,我收到此错误:
[INFO] Attaching agents: []
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
因此,每次我需要在调试模式下启动应用程序之后,我需要使用端口5005终止进程。
我想知道为什么在停止申请后仍然打开端口5005。
我在Windows 10,Maven 3.5.2,Java 8和Spring Boot 1.5.9.RELEASE上使用Cygwin64。
谢谢!
答案 0 :(得分:1)
这不是Spring Boot的问题,而是在cygwin中运行的非cygwin应用程序的问题。并且你的应用程序不仅让端口5005保持打开状态,它只是在后台运行,端口8080也打开了,但是在重启时首先打开调试端口,这就是你在错误信息中看到的。
2014年的SpringBoot问题https://github.com/spring-projects/spring-boot/issues/773对此进行了讨论。我引用了这个问题(引文中的链接日期是2006年):
任何人仍然关注此错误,这根本不是Spring Boot错误。这是在基于pty的终端上运行的非Cygwin程序(在本例中为Java)的已知问题。
请参阅此链接以获取完整说明无法解决的原因:http://cygwin.com/ml/cygwin/2006-12/msg00151.html
所以你基本上可以使用以下方法之一: