Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将tomcat作为eclipse中的外部工具启动_Eclipse_Tomcat_Jpda - Fatal编程技术网

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

无法将tomcat作为eclipse中的外部工具启动,eclipse,tomcat,jpda,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: Addr

我已经将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再次运行start 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

我不知道Eclipse是如何工作的,但在停止和启动Tomcat时,您似乎都在尝试绑定同一个JPDA端口。当您启动Tomcat时,它显然是正常的,但是当您试图停止它时,由于端口已被占用,因此无法停止

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

1) 从外部启动/停止Tomcat
tomcat/bin/catalina.sh jpda start
tomcat/bin/catalina.sh stop
在没有任何更改的情况下即可用。也许Eclipse允许启动外部脚本

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

主类:
org.apache.catalina.startup.Bootstrap

VM参数:
-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

程序参数:
开始

工作目录:
/path/to/tomcat


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

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

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

1) 从外部启动/停止Tomcat
tomcat/bin/catalina.sh jpda start
tomcat/bin/catalina.sh stop
在没有任何更改的情况下即可用。也许Eclipse允许启动外部脚本

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

主类:
org.apache.catalina.startup.Bootstrap

VM参数:
-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

程序参数:
开始

工作目录:
/path/to/tomcat

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