首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在调试模式下运行Apache Tomcat 8?

如何在调试模式下运行Apache Tomcat 8?
EN

Stack Overflow用户
提问于 2015-05-03 15:55:04
回答 4查看 22.2K关注 0票数 9

我正在尝试在调试模式下运行Apache Tomcat 8.0.21。

当我发出命令时

代码语言:javascript
复制
sh catalina.sh jpda start

它会给出这个错误。

错误消息

错误:无法加载此JVM代理两次,请检查java命令行中是否有重复的jdwp选项。初始化VM代理库时出错,无法初始化: jdwp

有人能帮上忙吗?

EN

回答 4

Stack Overflow用户

发布于 2017-06-30 04:45:49

或者

代码语言:javascript
复制
unset CATALINA_OPTS
unset JPDA_ADDRESS
unset JPDA_OPTS
unset JPDA_TRANSPORT

catalina.sh jpda start

代码语言:javascript
复制
# in .bashrc, .profile etc.
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -Djava.security.egd=file:/dev/urandom -Denv=dev -Xms1024M -Xmx2048M -XX:PermSize=256M -XX:MaxPermSize=768m"

# At your shell prompt
./startup.sh

解释

正如Arnab在评论中所说,如果您的shell配置包括提到jdpw的环境变量(例如CATALINA_OPTSJDPA_ADDRESSJPDA_OPTS),那么只需使用./startup.sh启动,就像您没有试图进行远程调试一样,脚本将从您的环境变量中选取jdpw选项。

只有当您没有任何已经指定远程调试端口的环境变量时,才应该使用启动选项语法catalina.sh jpda start。这是为了方便起见,但是如果您之前已经将shell配置为支持java远程调试,那么您可能会将这两种替代方法混合在一起。

票数 9
EN

Stack Overflow用户

发布于 2017-07-10 12:57:12

您可以像往常一样添加env变量并运行tomcat

在本例中,调试端口为8000

代码语言:javascript
复制
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

然后运行tomcat

代码语言:javascript
复制
sh ./catalina.sh start
票数 7
EN

Stack Overflow用户

发布于 2016-06-03 16:07:02

当我尝试添加调试参数(-Xdebug -agentlib:jdwp=transport=dt_socket、address=8000、server=y、suspend=y)以便在启动时挂起时,使用Eclipse时就会发生这种情况。不幸的是,我随后使用Debug按钮启动了Tomcat (在Eclipse中)。

为什么这是一个问题

当您在Debug模式下启动Tomcat时,Eclipse本身会插入调试参数。当您在启动配置中有自己的调试参数时,您实际上是在传递它们两次。

因此,如果您需要从Eclipse中启动Tomcat并在启动时将其挂起(以便您可以连接调试器),您需要:

  • 将调试参数添加到启动配置的"Arguments -> VM arguments“框中,然后选择”
  • “,然后”Run this config“,而不是”Debug.

这样,只会添加启动配置中的调试参数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30011505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档