我向此post发送了一条非常相似的错误消息;但是,同一篇文章的解决方案对我不起作用。编辑主机文件我在127.0.0.1 my-host-name
中添加到我的主机文件(链接线程中的每个解决方案)不幸地对我没有任何帮助。
"运行"在JDB中,我收到以下错误消息:
初始化jdb ...
运行运行QuadtreeBitmap VM启动异常:VM初始化失败: /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/java -Xdebug -Xrunjdwp:transport = dt_socket,address = Patricks-iMac.local:50547,suspend = y QuadtreeBitmap
错误:传输错误202:gethostbyname:未知主机错误:JDWP 传输dt_socket无法初始化,TRANSPORT_INIT(510)JDWP 退出错误AGENT_ERROR_TRANSPORT_INIT(197):未初始化传输 [debugInit.c:730]
致命错误:目标虚拟机无法初始化。
我正在使用MacOS并尝试通过终端直接启动JDB(而不是通过Eclipse或任何其他IDE)。
答案 0 :(得分:8)
jvm正在尝试在主机dt_socket
,端口Patricks-iMac.local
上打开50547
,但首先需要将该主机名解析为IP地址。 DNS查找将失败,因为它是分配给私有地址的虚拟主机名,DNS服务器通常不知道它们,除非系统管理员已配置它们(公司用来这样做)。有两种解决方案:
1)在hosts文件上添加主机名映射,保留为该IP配置的其他名称
127.0.0.1 localhost Patricks-iMac.local
2)通过IP地址配置dt_socket而不触及主机文件(推荐)
-Xrunjdwp:transport=dt_socket,address=127.0.0.1:50547
关于网络故障排除的一句话:
* unknown host
表示DNS问题,TCP连接根本没有启动,因为IP地址不可用
* host unreachable
表示TCP连接问题,已知IP但由于防火墙,路由或其他问题而无法访问。对该IP的ping
将失败
* port unreachable
表示TCP连接问题,IP可以访问,但端口不是因为防火墙,服务中断等,IP ping
将起作用,但与该端口的连接仍然会失败。< / p>
答案 1 :(得分:8)
在我的案例中,问题与Java 8有关。我将Java 9+语法用于远程调试器:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
在Java 8中,您不能使用* :port 格式的地址,而该地址应该是:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
答案 2 :(得分:0)
可能网络管理员在此期间做了一些更改。防火墙有些东西。问题是Eclipse尝试在“localhost”(和一些随机端口)建立与JVM的连接。你可以尝试这个解决方案。