2012-03-05 67 views
3

我挣扎调试做成了一个吊带捆绑的应用程序通过远程Java应用程序调试Groovy代码。应用程序几乎完全是Groovy代码(我有Groovy Eclipse插件),而Eclipse(使用Maven)正在构建.jar并将其安装在Sling中,没有任何问题。如何调试在Eclipse

然而,这不是能够调试。我按照说明设置远程调试,这是我收集是必要的调试吊带应用 - 具体而言,我启动吊带用下面的命令:

java -Xdebug -Xnoagent -Djava.io.tmpdir=/c/Users/nickgolding1/temp -Xmx1024m -Xrunjdwp:transport=dt_socket,address=30303,server=y,suspend=n -jar org.apache.sling.launchpad-6-SNAPSHOT-standalone.jar -p 8080 

...,然后设置调试配置在Eclipse中,类型为“远程Java应用程序”,指向我的项目,连接类型“标准(套接字连接)”,主机本地主机,端口30303.此配置似乎开始好 - 至少,我没有得到任何反馈,表明它没有' t - 但我在Groovy代码中设置的断点实际上并不会中断对Sling应用程序的请求执行。

我已经看到了,显示有通过远程Java应用程序的配置,在那里他们没有与Java代码问题调试Groovy代码问题的人的各种论坛一对夫妇的职位。不幸的是,我的应用程序都是Groovy,没有Java,所以我无法验证这是这种情况。

任何想法赞赏!

回答

3

首先,一个建议。在您的Xrunjdwp:transport选项中设置suspend=y。这将暂停在main中,并会给你一个更好的想法,以确定你的问题是否与你的调试选项或Groovy代码有关。现在

,到更复杂的东西。是。关于远程Groovy代码的调试有一些问题。这个问题通常出现在Groovy代码动态加载的时候。在这种情况下,调试名称通常与源名称不匹配,调试器不知道如何将动态加载的类文件与原始源代码相匹配。

一个这样的问题在这里描述(也有类似的地方发生的事情毫无疑问等地): https://jira.springsource.org/browse/SPR-7113

所以,我给你的建议是,如果可能,你应该确保你的Groovy代码为预在发送到服务器之前编译。 (并且还设置suspend=y。)

+1

感谢。 'suspend = y'告诉我调试选项正在工作(因为它等待Eclipse开始调试,然后成功启动)。所以看起来问题在于Groovy。 你的预编译的建议是好的,但我敢肯定,我的Groovy代码被预编译 - 当然,Maven构建,它的编译它们的输出声明。 – 2012-03-06 10:35:56

+0

另外,请确保您的groovy源包含在Eclipse中远程启动配置的源查找路径中。 – 2012-03-06 18:34:50

+0

他们不是,好点 - 但他们现在,甚至在清理和重新部署后仍然没有调试。 – 2012-03-13 13:46:12