开发者

Unable to debug in Java with eclipse

I am trying to debug a simple Java application on my machine using Eclipse as an IDE. When I try to debug the application by entering the Debug Perspective, I set a breakpoint and start debug. Within a few seconds, the following pop-up window:

Launching unicodeRead has encountered a problem. Cannot connect to VM.

The message dumped on the console is as follows:

ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket fa开发者_开发问答iled to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:708]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)  

How do I correct this? Why does this happen?


I just had the same problem.

Yesterday everything worked fine, now nothing - same error as you gave. I found out that network admins made some changes in the meantime. Some firewall stuff. Problem is that Eclipse tries to establish connection to JVM at "localhost" (and some random port). When I tried pinging localhost (or 127.0.0.1) I got following:

C:\Windows\system32>ping 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.

and

C:\Windows\system32>ping localhost
Ping request could not find host localhost. Please check the name and try again.

It seams that in some cases DNS is expected to resolve this, and if firewall prevents localhost requests to DNS - stuff breaks. I had to alter hosts file and remove comments in following lines, so I would not rely on DNS for this anymore:

# 127.0.0.1       localhost
# ::1             localhost

Although it is written that hosts file changes take effect immediately, I think that some processes locked this and restart was necessary in my case. After that, everything worked again.


Had same problem, but the solution was to run the application with -server=y option and not with -server=n.

Before:

java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:5005 

After:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:5005


Looks like the same problem as here. A reboot of the pc fixed the problem there. I haven't found any other solutions.


I was seeing an error while using the -X format:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

The error went away when I switched to the newer format:

java -agentlib:jdwp=transport=dt_socket,server=y,address=4000,suspend=n myapp


Its Very Simple,Just do the Following Changes in eclipse.ini file.

-vm
binary\com.sun.java.jdk.win32.x86_1.6.0.u43\jre\bin\javaw.exe


I changed

-agentlib:jdwp=transport=dt_socket,address=9009,server=n,suspend=y

to

-agentlib:jdwp=transport=dt_socket,address=9009,server=y,suspend=n

and that did the trick!


My case is I have a bunch of domains refer to 127.0.0.1 in hosts file, like this:

127.0.0.1 localhost domian1.local domain2.local domain3.local

one day I added another new domain to refer to 127.0.0.1. By mistake, I put the domain in front of "localhost", like this:

127.0.0.1 domain4.local localhost domian1.local domain2.local domainx.local

After this, I always got an alert window in eclipse while debugging:

Cannot connect to VM com.sun.jdi.connect.TransportTimeoutException

In console:

ERROR: transport error 202: connect failed: Connection refused ERROR: JDWP: Failed to initialize transport via localhost:50470, trying localhost via 127.0.0.1:50470 FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: transport error 202: connect failed: Connection refused 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]

The solution is keep "localhost" at the first position all the time.

127.0.0.1 localhost domian1.local domain2.local domainx.local domain4.local


What solved for me was deleting the entire domain1 folder inside the domains folder on glassfish main folder. Eclipse will ask you to recreate a domain and then everything works again.


In eclipse select Run tab -> Debug configuration -> Junit -> select your test name -> Environment tab -> add variable server=y .


I was getting the same error on my ubuntu machine because of a mishap with the /etc/hosts file. I had commented out the mapping of localhost to 127.0.0.1, and to complicate matters further there was a swap file hanging around.

This was the first line of my /etc/hosts:

127.0.0.1       #localhost

Deleting the # fixed the problem, whereas rebooting understandably had not.


My cause & solution were completely different.
I think in my case it was due to the installation of JProfiler. I fixed it by uninstalling JProfiler and launching eclipse with the -clean option. I suspect that JProfiler was inserting itself in the debugger. The -clean option forces Eclipse to re-assess its plugins, so that alone might have been sufficient.


Continuing @gonadarian's answer, it seems Eclipse uses port 127.0.0.1 for debug purposes. This port is also called localhost. The way this error can be removed is by ensuring that there are no processes or services running on the above ports. The way to do this, on Linux is:

  1. As root, enter the command:
    netstat -tulpn | grep 127.0.0.1

  2. If there are processes running on the above port, it will show up in the format:
    process_id/process name.

  3. Kill the above processes like so: kill -KILL process_id

  4. Restart the computer for these changes to take effect. The error should no longer occur.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜