我正在尝试在调试模式下运行Apache Tomcat 8.0.21。
当我发出命令时
cv::imencode
它给出了这个错误。
错误消息
错误:无法加载此JVM TI代理两次,请检查您的java命令 重复jdwp选项的行。初始化期间发生错误 VM代理程序库无法初始化:jdwp
有人可以帮忙吗?
答案 0 :(得分:5)
<强>要么强>
static
或强>
unset CATALINA_OPTS
unset JPDA_ADDRESS
unset JPDA_OPTS
unset JPDA_TRANSPORT
catalina.sh jpda start
说明的
正如Arnab在评论中所说,如果您的shell配置包含提及jdpw的环境变量(例如# 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
,CATALINA_OPTS
,JDPA_ADDRESS
),则只需使用JPDA_OPTS
启动如果您没有尝试进行远程调试,脚本将从环境变量中选择jdpw选项。
只有在没有任何已指定远程调试端口的环境变量时,才应使用启动选项语法./startup.sh
。它本来是方便的,但如果您之前已经配置了shell来支持Java远程调试,那么您可能会混合使用两种替代方法。
答案 1 :(得分:2)
当我尝试添加调试参数(-Xdebug -agentlib:jdwp = transport = dt_socket,address = 8000,server = y,suspend = y)时,我发现使用Eclipse ,所以我可以暂停Tomcat的开始。不幸的是,我随后使用Debug按钮启动了我的Tomcat(在Eclipse中)。
为什么这是一个问题
在调试模式下启动Tomcat时,Eclipse本身会插入调试参数。如果在启动配置中有自己的调试参数,则确实会将它们传递两次。
因此,如果您需要从Eclipse中启动Tomcat并在启动时暂停它(因此您可以连接调试器),您需要:
- 将调试参数添加到&#34; Arguments - &gt; VM参数&#34;启动配置框,
- 然后运行此配置,而不是调试
这样只会添加启动配置中的调试参数。
答案 2 :(得分:2)
您可以添加env变量并像往常一样运行tomcat
调试端口为8000 ,在这种情况下
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
然后运行tomcat
sh ./catalina.sh start
答案 3 :(得分:0)
“ catalina.sh”中推荐使用另一种方法:
“请勿在此脚本中设置变量。而应将其放入脚本中
对于Windows,带有环境变量的文件名为'setenv.bat'。