Java Tomcat启动忽略调试的jpda选项

Java Tomcat启动忽略调试的jpda选项,java,macos,tomcat,jpda,Java,Macos,Tomcat,Jpda,我试图在调试模式下运行Tomcat7。如果我键入/catalina.sh jpda starttomcat运行时就好像不存在jpda选项并输出: Michaels-MacBook-Pro:bin clairewilgar$ ./catalina.sh jpda start Using CATALINA_BASE: /Users/clairewilgar/Downloads/apache-tomcat-7.0.42-MIS Using CATALINA_HOME: /Users/clair

我试图在调试模式下运行Tomcat7。如果我键入
/catalina.sh jpda start
tomcat运行时就好像不存在jpda选项并输出:

Michaels-MacBook-Pro:bin clairewilgar$ ./catalina.sh jpda start
Using CATALINA_BASE:   /Users/clairewilgar/Downloads/apache-tomcat-7.0.42-MIS
Using CATALINA_HOME:   /Users/clairewilgar/Downloads/apache-tomcat-7.0.42-MIS
Using CATALINA_TMPDIR: /Users/clairewilgar/Downloads/apache-tomcat-7.0.42-MIS/temp
Using JRE_HOME:        /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Using CLASSPATH:       /Users/clairewilgar/Downloads/apache-tomcat-7.0.42-MIS/bin/bootstrap.jar:/Users/clairewilgar/Downloads/apache-tomcat-7.0.42-MIS/bin/tomcat-juli.jar
也不会改变我的卡塔琳娜选择或任何事情。如果我试图通过Eclipse进行连接,就会出现错误

“启动工作流”遇到问题。无法连接到远程VM。连接被拒绝

我曾尝试将端口更改为jpda端口至8001,但没有成功,我曾尝试在调用catalina.sh之前在终端中声明jpda选项,但这没有任何区别。我的catalina.sh JPDA行如下:

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
  shift
fi
JPDA可能无法运行还有其他原因吗?我正在使用OSX(MountainLion),如果有任何与此相关的东西我可能错过了。提前谢谢


编辑:运行
/catalina.sh jpda start
的My catalina.out文件如果从
startup.sh
启动,则会出现相同的问题?请记住,您可能必须编辑
startup.sh
,使其使用
jpda
参数调用
catalina.sh

您是否尝试过手动设置变量?我从来没有遇到过这个问题,但我倾向于这样做

此外,如果上述变量已在您的环境中设置,则不会在
catalina.sh
脚本(
-z
)中重置它们

您还可以尝试在
bin
文件夹中添加
setup.sh
,其中包含:

JPDA_TRANSPORT="dt_socket"
JPDA_ADDRESS="8000"
JPDA_SUSPEND="n"
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"

通过此更改,您只需使用
startup.sh start

启动tomcat,这可能是IPv4与IPv6的问题

netstat -an | grep 8000
我曾经遇到一个问题,无法连接到“localhost”端口13306,但可以连接到“127.0.0.1”端口13306


当进程侦听IPv4地址时,localhost映射到IPv6地址

您可以在catlina.sh中更改此行:

if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
fi
致:


或者在调用catalina.sh之前将env var“JPDA_SUSPEND”设置为“y”

我也遇到了同样的问题,因为我的startup.sh文件包含以下行:

exec "$PRGDIR"/"$EXECUTABLE" start "$@"
因此,命令./startup.sh jpda start作为start jpda start发送到catalina.sh,因此调试选项被忽略,所以我不得不将此行更改为

exec "$PRGDIR"/"$EXECUTABLE" "$@"
问候,,
Borys

更改此文件的最后一行:
“startup.sh”
“startup.bat”
如果您使用的是Windows)

而不是使用这个:

exec "$PRGDIR"/"$EXECUTABLE" start "$@"
使用以下命令:

exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"

同样的问题是的,我以前看过那个维基,但它似乎没有任何区别。也尝试手动设置变量,但不知何故还是忽略了它,只运行普通的Tomcat。它似乎与我不调用jpda时的情况完全相同,没有提到它或jdwp,也没有错误。请看这里:我刚刚下载了Tomcat7.0.42(Windowsx86,在cygwin中执行),它运行良好。使用
jpda start
和在
setup.sh
中设置环境变量,只需使用
startup.sh start
启动即可。香草野猫对你有用吗?没有额外的部署。嗯,香草(没有战争或任何东西)部署任何时候,但它也不调用jpda。。。我检查了防火墙,但没有任何东西阻止它,所以不确定还有什么可以做。在
CATALINA.sh
中启动JVM之前(我相信是在第386行附近),您是否可以尝试添加
echo$CATALINA_OPTS
,看看它说了什么?
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"