Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

debugging - Java JDB: ERROR: transport error 202: gethostbyname: unknown host

I have a very similar error message to this post; however, the solution on that same post did not work for me. Editing the host file my adding in 127.0.0.1 my-host-name to my hosts file (per solution in linked thread) did nothing for me unfortunately.

After "run" in JDB, I get the following error message:

Initializing jdb ...

run run QuadtreeBitmap VM start exception: VM initialization failed for: /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

ERROR: transport error 202: gethostbyname: unknown host ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:730]

Fatal error: Target VM failed to initialize.

I am using MacOS and trying to launch JDB directly through the terminal (and not through Eclipse or any other IDE).

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The jvm is trying to open the dt_socket at host Patricks-iMac.local, port 50547 but needs first to resolve that host name to an IP address. DNS lookup will fail since it's a dummy hostname assigned to a private address and DNS servers usually don't know about them unless a sysadmin has configured them (companies use to do that). There are two solutions for this:

1) Add the hostname mapping on hosts file keeping other names configured for that IP
127.0.0.1 localhost Patricks-iMac.local

2) Configure the dt_socket by IP address without touching hosts file (recommended)

-Xrunjdwp:transport=dt_socket,address=127.0.0.1:50547

A word on networking troubleshooting:
* unknown host means DNS problems, TCP connection did not start at all because an IP address was not available.
* host unreachable means TCP connectivity problems, an IP is known but not reachable because of firewall, routing or other problems. ping to that IP will fail.
* port unreachable means TCP connectivity problems, the IP is reachable but the port is not because of firewalls, service is down, etc. ping to the IP will work but connections to that port will still fail.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...