Rémi Doolaeghe
Rémi Doolaeghe

Reputation: 2322

Maven Eclipse Debug "JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)"

I'm trying to debug Maven tests in Eclipse. When I launch tests with the maven option maven.surefire.debug, I get this error :

ERROR: transport error 202: bind failed: Address already in use
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
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]
/bin/sh: line 1: 27500 Abort trap        

It is the same when I tried tu launch debug in my shell.

I tried to add the maven option forkMode=never, and I get another error with my weld artifact that I do not have without the maven.surefire.debug option :

Error loading Weld bootstrap, check that Weld is on the classpath

However, Weld is on my classpath.

Any ideas ?

Upvotes: 38

Views: 110804

Answers (12)

WesternGun
WesternGun

Reputation: 12787

You may have defined system-wide JAVA_OPTS which have the same -agentlib part to enable remote debugger. For example:

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

once the 2nd Java process launches, it will always listen to the same port as 1st process, which is 60740 in this case.

Solution:

  1. kill 1st Java process before running the 2nd
  2. do not use -agentlib in JAVA_OPTS
  3. provide new port for each new Java process, that is, new JAVA_OPTS for each Java process.

Upvotes: 0

Adir Dayan
Adir Dayan

Reputation: 1627

in my case no port was open before, but I used old java so had to use the correct string for attaching debugger

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

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

Upvotes: 0

rdev
rdev

Reputation: 524

This kind of weird problems can also be caused by VPN connections

Upvotes: 1

darniz
darniz

Reputation: 31

it was the host file adding below

127.0.0.1 localhost

fixed

Upvotes: 0

ofirbt
ofirbt

Reputation: 1896

For Mac users:

Usually the problem is that another process keeps Maven debug port 5005 open. So I checked which process keeps this port open by executing:

lsof -i tcp:5005

The output was:

COMMAND  PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    9089 my_user    7u  IPv4 0xe88ec542fd4cffc9      0t0  TCP *:avt-profile-2 (LISTEN)

And then I killed the process:

kill -9 9089

If you want these 2 process to be able to run together, you'll have to change the Maven debug port of at least one of them. See: http://maven.apache.org/surefire/maven-surefire-plugin/examples/debugging.html.

Upvotes: 14

ShishirkumarAithal
ShishirkumarAithal

Reputation: 151

first of all remove all debug points in eclipse

search for PID with server port
netstat -ano|find /i "7001"
replace 7001 with your port number in above line

sample o/p C:\Users\shaithal>netstat -ano|find /i "7001" TCP 127.0.0.1:51340 127.0.0.1:7001 SYN_SENT 17396

then kill that process taskkill /F /PID 17396

search for PID with debug port also netstat -ano|find /i "8453" 8453 is debug port in my case replace 8453 with your port number in above line

sample o/p

C:\Users\shaithal>netstat -ano|find /i "8453" TCP 0.0.0.0:8453 0.0.0.0:0 LISTENING 19904

then kill that process taskkill /F /PID 19904

Upvotes: 1

davidrl1000
davidrl1000

Reputation: 361

Just for documentation, I had the exact same error, running on my local:

ERROR: transport error 202: bind failed: Address already in use FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)

in my case the port wasn't the issue, but the host file. The solution is to add/re-add/uncomment:

127.0.0.1 localhost

The config file sets localhost as default, so a solution is add that host or change it for a custom one.

Upvotes: 3

The solution to me was removing the breakpoints of project! If you have many branches and changed recently sometimes eclipse lost some's breakpoints.

Upvotes: 1

moa
moa

Reputation: 61

There is a long time the question was asked but i had the same problem recently.

  1. Open Task Manager

  2. Kill all "java.exe" process

  3. Relaunch the mvn debug

Hope it will help

Upvotes: 6

kks
kks

Reputation: 36

To add on.. I had the similar issue last week, when debugging using eclipse was made impossible.

FATAL ERROR in native method: JDWP No transports initialized,
jvmtiError=AGENT_ERROR_TRANSPORT_LOAD(196)
ERROR: transport library not found: dt_socket
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)
JDWP exit error AGENT_ERROR_TRANSPORT_LOAD(196): No transports initialized [../../../src/share/back/debugInit.c:690]

Sadly non of the solution I can possibly find online was helpful.

The issue turned out to be that somehow firewall removed all the dlls in my JRE bin... (so dt_socket.dll went completely missing).

Reinstalling the entire JRE helped.

Upvotes: 1

Jasonw
Jasonw

Reputation: 98

Go to Debug configuration -> Remote Java Application -> Connect tab, check Allow termination of remote JVM.

Then, when you are going to restart the server/maven, go to Debug perspective and click the read / stop button.....

Upvotes: 5

lucrussell
lucrussell

Reputation: 5160

To kill a process listening on a port:

This command should list processes listening on all ports:

netstat -ano

The -o option will display the process id.

If you're using a *nix system, you can refine a little further with:

netstat -ano | grep <badport> 

When you have the process id, you can terminate it with:

Windows:

  • Open Task Manager, add the PID column with View > Select Columns > PID
  • Find the process and right-click to kill it

Others:

kill <PID>

Upvotes: 33

Related Questions