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

myzjeezk  于 2022-11-07  发布在  Apache
关注(0)|答案(5)|浏览(382)

我尝试在调试模式下运行Apache Tomcat 8.0.21。
当我给予命令时

sh catalina.sh jpda start

则会产生此错误。

错误消息

错误:无法加载此JVM TI代理两次,请检查Java命令行中是否存在重复的jdwp选项。在初始化VM代理库期间出错,无法初始化:联合数据处理平台
有人能帮忙吗?

h22fl7wq

h22fl7wq1#

两者皆可

unset CATALINA_OPTS
unset JPDA_ADDRESS
unset JPDA_OPTS
unset JPDA_TRANSPORT

catalina.sh jpda start

"或者"


# 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远程调试,你可能会混合使用这两种方法。

ha5z0ras

ha5z0ras2#

您可以添加env变量并照常运行tomcat

在本例中调试端口为8000

export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

那就跑雄猫

sh ./catalina.sh start
t1rydlwq

t1rydlwq3#

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

为什么这是个问题

当您在调试模式下启动Tomcat时,Eclipse本身会插入调试参数。当您在启动配置中有自己的调试参数时,您实际上是将它们传递了两次。
因此,如果您需要从Eclipse中启动Tomcat并在启动时挂起它(以便可以连接调试器),则需要:

  • 将调试参数添加到启动配置的“参数-〉VM参数”框中,
  • 然后运行此配置,而不是调试。
    这样,只会添加启动配置中的调试参数。
zqdjd7g9

zqdjd7g94#

还有一种替代方法,在“catalina.sh”中推荐:
“不要在此脚本中设置变量。请将它们放在 Catalina _BASE/bin中的脚本setenv.sh中,以使您的自定义内容保持独立。”
对于Windows,包含环境变量的文件名为“setenv.bat”。

p4tfgftt

p4tfgftt5#

谢谢你,迪米塔二世先生
已验证此功能是否正常工作,并在运行startup.bat时自动使用
文件:setenv.bat

@echo off
rem The proper way to set environment up for running Catalina
set "CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

相关问题