如何远程调试java app并将端口转发到虚拟机?

How to remotely debug java app and forwarding the port to virtual machine?

我想在启用调试的主机 (windows 7) 中启动 java 应用程序

-Xdebug 
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

然后我想通过vagrant启动一个虚拟机,将端口5005转发给guest机器

在来宾计算机上,我想连接到端口 5005 并调试应用程序。

config.vm.network "forwarded_port", guest: 5005, host: 5005, protocol: 'tcp'
config.vm.network "forwarded_port", guest: 5005, host: 5005, protocol: 'udp'

问题是,一旦虚拟机 运行,java 应用程序在我启动时立即崩溃。当我将调试端口更改为 5005 以外的其他端口时,应用程序启动。

如评论中所述,您不应在 JVM 运行 所在的计算机上转发端口,它是 Java 应用程序需要在该端口上接收流量并且启动最有可能失败因为端口已经被转发了。

另一端的转发也不是必需的,您可以在 : 上调试。