这应该很简单,但是当它在RHEL 6.1上作为服务运行时,我无法在Tomcat 6上进行调试。
我已将以下行添加到/etc/tomcat6/tomcat6.conf
JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
当我用
重新启动tomcat 6服务时service tomcat6 restart
命令行指示Tomcat关闭并启动,但它没有运行,当我查看catalina.out日志时,我看到
ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
Error occurred during initialization of VM
agent library failed to init: jdwp
尝试重启Tomcat6服务对于关闭和启动都会失败。我必须重新启动RHEL。
我认为默认情况下Tomcat6可能在调试模式下运行,但是当我在tomcat6.conf中注释掉该行并使用netstat -an重新启动时,使用端口8000或Tomcat使用的任何端口都没有显示任何内容。 / p>
当Tomcat 6作为服务运行时,它是否可以在调试模式下运行?
答案 0 :(得分:2)
只需检查 Catalina.sh 文件中提供的 PORT number 8000 即可。并检查是否有任何进程在相同的PORT编号8000中运行。
如果任何进程在同一端口运行,则停止进程并运行jpda。
检查同一地址中的 env 变量。 catalina.sh文件shell脚本清楚地告诉它使用端口8000来执行它。
如果您想更改端口地址并在 .bashrc 文件中设置 如
导出JPDA_ADDRESS = 8009
并执行命令
$ ./catalina.sh jpda run (这是普通方法)
如果您已经使用安全管理器运行
$ ./catalina.sh jpda run -security
并转到 Eclipse
转到 - > 调试配置
将Eclipse配置为远程调试
首先,我们必须使用我们要调试的应用程序的源代码打开或导入项目。之后我们必须从Eclipse设置调试:
1)单击工具栏中“调试”按钮(带有错误的按钮)的右侧(箭头朝向上方),然后单击“调试配置...”或菜单“运行”>调试配置...然后将打开一个具有不同调试配置的新窗口。
调试配置
2)在左侧菜单中选择“远程Java应用程序”,然后按“新启动配置”按钮(左上角带有文件夹图标的按钮)。
新的调试配置
3)使用与我们的Tomcat实例对应的数据填充配置:
Project: The project we want to debug: it has to contain the source code for the application we want to debug.
Connection Type: Standard (Socket Attach).
Host: IP of the server in which is Tomcat installed.
Port: Port indicated to JVM in address parameter. Port 8000 in our example
Eclipse没有显示。 eclipse中没有显示任何变化。
在eclipse中只需设置断点,然后在tomcat中运行应用程序。
<强> !!!!!!成功调试模式将正常工作!!!!!!!!!
<强> Congratzzzzz !!!!! 强>
通过 sampath
答案 1 :(得分:1)
再一次重启似乎解决了它。 RHEL现在正在侦听端口8000,我可以连接一个远程调试器。
怪异。
答案 2 :(得分:0)
我遇到了同样的错误,原因是https://bugzilla.redhat.com/show_bug.cgi?id=899458。解决方法是从/usr/sbin/tomcat6
中删除以下行:
# Get the tomcat config (use this for environment specific settings)
if [ -z "${TOMCAT_CFG}" ]; then
TOMCAT_CFG="/etc/tomcat6/tomcat6.conf"
fi
if [ -r "$TOMCAT_CFG" ]; then
. $TOMCAT_CFG
fi
您的问题可能有所不同(否则没有理由重新启动),但我要离开这个,以便搜索错误消息的人可以找到它。