Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDB:错误:传输错误202:gethostbyname:未知主机_Java_Debugging - Fatal编程技术网

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

Java JDB:错误:传输错误202:gethostbyname:未知主机,java,debugging,Java,Debugging,我有一个与此非常相似的错误消息;然而,同一个帖子上的解决方案对我来说并不适用。不幸的是,编辑主机文件my-in127.0.0.1 my-host name添加到我的主机文件(链接线程中的每个解决方案)对我没有任何帮助 在JDB中“run”之后,我得到以下错误消息: 正在初始化jdb 运行QuadtreeEBITMAP虚拟机启动异常:虚拟机初始化失败: /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/Java -X

我有一个与此非常相似的错误消息;然而,同一个帖子上的解决方案对我来说并不适用。不幸的是,编辑主机文件my-in
127.0.0.1 my-host name
添加到我的主机文件(链接线程中的每个解决方案)对我没有任何帮助

在JDB中“run”之后,我得到以下错误消息:

正在初始化jdb

运行QuadtreeEBITMAP虚拟机启动异常:虚拟机初始化失败: /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/Java -Xdebug-Xrunjdwp:transport=dt_socket,address=patrick iMac.local:50547,suspend=y 四叉树映射

错误:传输错误202:gethostbyname:未知主机错误:JDWP Transport dt_套接字初始化失败,Transport_INIT(510)JDWP 退出错误代理\u错误\u传输\u初始化(197):没有初始化传输 [debugInit.c:730]

致命错误:目标VM未能初始化


我正在使用MacOS,并试图通过终端直接启动JDB(而不是通过Eclipse或任何其他IDE)。

网络管理员在此期间可能做了一些更改。一些防火墙的东西。问题是Eclipse试图在“localhost”(和一些随机端口)上建立到JVM的连接。你可以试试这个解决方案


jvm正试图打开主机
patrick iMac.local
、端口
50547
上的
dt_套接字
,但需要首先将该主机名解析为IP地址。DNS查找将失败,因为它是分配给私有地址的虚拟主机名,DNS服务器通常不知道这些主机名,除非系统管理员对其进行了配置(公司通常会这样做)。有两种解决方案:

1) 在主机文件上添加主机名映射,保留为该IP配置的其他名称
127.0.0.1 localhost patrick iMac.local

2) 按IP地址配置dt_套接字,无需触摸主机文件(推荐)

-Xrunjdwp:transport=dt_套接字,地址=127.0.0.1:50547

关于网络故障排除的一句话
*
未知主机
表示DNS问题,TCP连接根本没有启动,因为IP地址不可用。
*
主机不可访问
表示TCP连接问题,IP已知但由于防火墙、路由或其他问题而无法访问<代码>ping到该IP将失败。

*
端口不可访问
表示TCP连接问题,IP可访问,但端口不可访问,因为防火墙、服务关闭等原因。
ping
到IP将工作,但到该端口的连接仍将失败。

在我的案例中,问题与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

如果执行ping patrick iMac.local操作,将显示什么IP?这是要添加到主机文件的映射。@LuisMuñoz你完全正确。如果你决定写一个,我会接受你的答案!如果能明确主机文件映射应该特定于像我这样的noobs的错误消息,那就太好了。哇,伙计,你可能节省了我几个小时的时间。我还使用了带有
address=*:5005
的语法,但不知道Java8有这样的区别。你太棒了,谢谢你!这是正确的答案,非常感谢@我认为OP最初的问题可能不同。我相信谷歌将这个问题编入索引,就像我这样的人在问题发生时发现的那样。我很高兴我能做出贡献。两个Java版本中对我都适用的语法是
address=0.0.0.0:5005
谢谢你节省了时间!