ERROR: transport error 202: connect failed: No route to host
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
Solution
This problem still exists in Intrepid, so here's a workaround. This also fixes problems connecting to processes using JConsole and debugging in NetBeans.
The trouble is in /etc/hosts. Ubuntu places "127.0.0.1 <hostname-you-picked-when-you-installed>" in there by default. For whatever reason, with this default setup, Ubuntu is unable to report hostname properly. If you issue hostname -i to get the IP address, it reports a nonsense address, not the DHCP'd address, and not even the address of the DHCP host. So the solution is to associate your actual IP address with <hostname-you-picked-when-you-installed> in /etc/hosts.
For me, I'm behind NAT, so I set up a static IP address and I replaced the default /etc/hosts line with this:
127.0.0.1 localhost.localdomain localhost
192.168.1.4 toodles-laptop
Then when I issue hostname -i the system reports 192.168.1.4 and Java is happy making JMX and debug connections. JConsole works, and I can debug in both Eclipse and NetBeans.
This will also work using DHCP (as opposed to assigning a static IP), but only till the DHCP server gives you a new IP address. Then you'll have to update /etc/hosts again, reboot and hope you get the same IP address :) If anyone knows how to do this properly with DHCP, please correct me here.