9

我正在尝试在调试模式下运行 Tomcat 7。如果我键入./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/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

并且不会改变我的 CATALINA_OPTS 或任何东西。如果我尝试通过 Eclipse 连接,我会收到错误消息

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

我尝试将端口更改为 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(Mountain Lion)。提前致谢。

编辑:我运行的 catalina.out 文件./catalina.sh jpda start位于http://pastebin.com/Z4GSvckr

4

5 回答 5

6

如果您从 开始,同样的问题startup.sh?请记住,您可能必须进行编辑才能使用参数startup.sh调用它。catalina.shjpda

您是否尝试过手动设置变量?我从来没有遇到过这个问题,但我倾向于做类似这个wiki中描述的事情。

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

您也可以尝试在包含以下内容setup.shbin文件夹中添加:

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.

于 2013-09-10T11:54:27.867 回答
1

这可能是 IPv4 与 IPv6 的问题。

netstat -an | grep 8000

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

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

于 2013-09-19T09:58:03.543 回答
0

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

而不是使用这个:

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

用这个:

exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
于 2014-09-11T10:37:17.813 回答
0

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

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

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

exec "$PRGDIR"/"$EXECUTABLE" "$@"

问候, 鲍里斯

于 2014-07-24T09:46:05.727 回答
0

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

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

至 :

if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="y"
fi

或在调用 catalina.sh 之前将 env-var "JPDA_SUSPEND" 设置为 "y"

于 2014-06-10T10:42:34.973 回答