eclipse远程debug启动报错:JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:741]

参考http://1985wanggang.blog.163.com/blog/static/776383320120384555181/http://1985wanggang.blog.163.com/blog/static/776383320120384555181/上面的eclipse远程debug配置方式,发现如果在eclipse中关掉debug进程和远程的应用进程后,不能再启动应用了,报了如下的错:

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
ERROR: transport error 202: bind failed: Address already in use
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:741]

后来才发现任务管理器中有个java.exe的进程,这个进程就是jetty容器进程。手动杀掉这个进程后,才可以重新启动应用和debug功能。

网上有一些解决方法:

1. 设置hosts文件127.0.0.1与localhost的映射

2. 打开防火墙,让javaw.exe可以访问网络

3. 重启eclipse或者重启电脑

以上的几种方法都试过了,都不管用。

还是自己研究,经查,原来是很弱的原因:

关闭这个jetty的进程java.exe不是通过关闭jetty容器来实现的,而是用eclipse debug的客户端来关闭的。

解决方案:

在菜单栏Run–>Debug Configurations–>然后选择你的remote java application–>connect中有一个Allow termination of remote VM的复选框,勾上这个就行了。

然后启动了jetty容器后,再启动debug,此时就可以terminate debug来关闭jetty容器的进程了。(注意:不能直接在启动了jetty容器后,点Terminate来关闭jetty,这样不能关闭jetty,因为它是一个后台运行的java.exe进程在运行jetty容器,只能通过jpda的debug方式来远程关闭jetty容器,或者在任务管理器中干掉java.exe进程)

Post Footer automatically generated by wp-posturl plugin for wordpress.



好书推荐:Java Web开发实战