Reputation: 2322
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
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:
-agentlib
in JAVA_OPTS
JAVA_OPTS
for each Java process.Upvotes: 0
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
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
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
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
Reputation: 11
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
Reputation: 61
There is a long time the question was asked but i had the same problem recently.
Open Task Manager
Kill all "java.exe" process
Relaunch the mvn debug
Hope it will help
Upvotes: 6
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
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
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:
Others:
kill <PID>
Upvotes: 33