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

标签 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

最佳答案

我不知道 Eclipse 是如何工作的,但看起来您在停止和启动 Tomcat 时都试图绑定(bind)到同一个 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 进程来停止 tomcat,或者使用 stop 作为程序参数创建一个类似的环境,这将优雅地关闭它。如果您查看 catalina.sh,这个脚本所做的就是准备所有这些参数并以相同的方式启动 Tomcat。

关于eclipse - 无法在eclipse中将tomcat作为外部工具启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9000882/

相关文章:

java - m2eclipse 的 "Resolve workspace artifacts"不起作用?

java - Selenium session 未创建异常错误

java - 似乎无法将 Tomcat 日志重定向到 log4j

java - TomEE Embedded 作为 systemctl 服务停止

在 Docker 容器中调试 Tomcat

c - 使用 Eclipse 时在 Windows 上分析 C 代码

java - 如何在 eclipse 摄入文本中制作文本框并将其用作变量

java - 如何将桌面 Java 应用程序连接到在线数据库(对于傻瓜)?

java - 学习 Java 调试