当我添加以下Java选项以启用调试时:
JAVA_OPTS="$JAVA_OPTS -noverify -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
Run Code Online (Sandbox Code Playgroud)
每当我尝试关闭tomcat时,我都会收到以下错误:
ERROR: transport error 202: bind failed: Address already in use ["transport.c",L41]
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) ["debugInit.c",L500]
JDWP exit error JVMTI_ERROR_INTERNAL(113): No transports initializedFATAL ERROR in native method: JDWP No transports initialized, jvmtiError=JVMTI_ERROR_INTERNAL(113)
Run Code Online (Sandbox Code Playgroud)
Jaa*_*aan 36
谢谢你的简短解释,PHeath!根据您的建议,我发现解决问题的最佳方法是使用CATALINA_OPTS而不是JAVA_OPTS.
查看catalina.sh,可以看到CATALINA_OPTS仅由"start"和"start-security"命令使用,而"stop"命令也使用JAVA_OPTS(至少在openSUSE 12.1上使用Tomcat 6.0.33).
至少如果你已经在Linux上安装Tomcat的使用的软件包管理器,然后修改/etc/tomcat6/tomcat6.conf的CATALINA_OPTS变量(或您的发行任何路径)比直接改变catalina.sh脚本,包管理器清洗剂假设用户只改变配置文件,并打破这个假设升级Tomcat的包(如丢失设置,因为catalina.sh文件被覆盖)时,可能会出现问题.
我认为一个人应该更喜欢不仅JDWP但对于许多其他选项以及JAVA_OPTS CATALINA_OPTS:例如,如果一个使用堆大小选项-Xmx ...那么这将是合理的,把它变成CATALINA_OPTS,作为"停止"命令不需要太多堆.
PHe*_*ath 29
您正在尝试在启动时调试tomcat,因此它在jvm启动时绑定到端口5005.
当你运行时catalina.sh stop
,它启动另一个jvm,它也试图绑定到端口5005.
您需要将调试args移动到运行并启动catalina.sh
tomcat的参数(in ),将它们直接放入JAVA_OPTS
是您遇到的问题的原因.
问题是您的tomcat仍然在调试端口(5005)上运行,或者在同一端口(5005)上运行的某些其他服务上运行.
如果tomcat仍在运行,你可以杀死它
现在你应该能够在没有任何问题的情况下以调试的方式启动服务器.
这可以通过已经通过maven执行的工具(eclipse)在调试单元测试中发生.除此之外,你可以流动相同的过程.
首先关闭Eclipse并杀死java进程并再次启动它.
归档时间: |
|
查看次数: |
31972 次 |
最近记录: |