无法启动tomcat作为eclipse中的外部工具

时间:2012-01-25 10:11:08

标签: eclipse tomcat jpda

我已经配置了eclipse能够启动(用于调试:使用jpda)并将tomcat作为程序停止。第一次从eclipse启动/关闭tomcat是成功的。 但是当我第二次尝试启动tomcat时,我收到以下错误:

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:690]

我认为当我从eclipse运行shutdown tomcat时,端口永远不会关闭。如果我重新启动计算机,端口将被释放,我可以从eclipse再次运行启动tomcat。  但每次我都无法重新启动计算机以使其工作......寻找一个不那么激进的解决方案...

这就是我配置我的eclipse以运行tomcat作为程序的方式。

Configured the external tool configuration in eclipse 
catalina script points to catalina.bat on my Windows machine 
under arguments : jpda run
In the Environment tab.
 "JPDA_ADDRESS" as the name and "8000" as the value
 "JPDA_TRANSPORT" as the name and "dt_socket" as the value
 "JAVA_OPTS" as the name and -server -XX:+UseParallelGC -Xmx768m -XX:MaxPermSize=160m -Djava.awt.headless=true as the value

1 个答案:

答案 0 :(得分:1)

我不知道Eclipse是如何工作的,但看起来你在停止和启动Tomcat时都试图绑定在同一个JPDA端口上。当你启动Tomcat时,它显然很好,但当你试图阻止它时 - 由于端口已被占用而无法停止。

有很多方法可以解决这个问题,这些是我个人使用的方法:

1)从外部启动/停止Tomcat。 tomcat/bin/catalina.sh jpda starttomcat/bin/catalina.sh stop开箱即用,不做任何更改。也许Eclipse允许启动外部脚本?

2)从Eclipse开始/停止Tomcat作为一个简单的Java程序。这样,您甚至不需要远程调试,因为您的程序可以像任何其他Java程序一样进行调试。我的IntelliJ配置如下所示:

主要班级: org.apache.catalina.startup.Bootstrap

虚拟机参数: -ea -cp $CLASSPATH:/path/to/tomcat/bin/bootstrap.jar -Dcatalina.base="/path/to/tomcat" -Dcatalina.home="/path/to/tomcat" -Djava.io.tmpdir="/path/to/tomcat/temp" -noverify -Xmx400M -XX:MaxPermSize=400M

计划参数: start

工作目录: /path/to/tomcat

然后,您可以通过简单地终止Java进程或使用stop作为程序参数创建一个类似的环境来停止tomcat,这将优雅地将其关闭。如果你看一下catalina.sh,所有这个脚本都是为了准备所有这些参数并以相同的方式启动Tomcat。