Java JDB:错误:传输错误202:gethostbyname:未知主机

时间:2018-05-15 07:49:11

标签: java debugging

我向此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)。

3 个答案:

答案 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的连接。你可以尝试这个解决方案。

Unable to debug in Java with eclipse