编程语言
首页 > 编程语言> > 如何通过Eclipse中的远程Java应用程序调试来调试Groovy代码

如何通过Eclipse中的远程Java应用程序调试来调试Groovy代码

作者:互联网

我正在努力调试构建为Sling包的应用程序.该应用程序几乎完全是Groovy代码(我有Groovy Eclipse插件),Eclipse(使用Maven)构建.jar并在Sling中安装它没有任何问题.

但是,它无法调试.我已按照说明设置远程调试,我收集这些是调试Sling应用程序所必需的 – 具体来说,我使用以下命令启动Sling:

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应用程序”的调试配置,指向我的项目,连接类型“标准(套接字连接)”,主机localhost,端口30303.此配置似乎开始正常 – 在至少,我没有得到任何反馈表明它没有 – 但我在Groovy代码中设置的断点实际上并没有破坏对Sling应用程序的请求执行.

我在各种论坛上看到了一些帖子,这些帖子显示人们在通过远程Java应用程序配置调试Groovy代码时遇到问题,他们在Java代码中没有问题.不幸的是我的应用程序都是Groovy而且没有Java,因此我无法验证这是否就是这种情况.

任何想法赞赏!

解决方法:

首先,一个建议.在Xrunjdwp:transport选项中设置suspend = y.这将暂停在main中,并且可以让您更好地了解您的问题是否与您的调试选项或Groovy代码有关.

现在,更复杂的事情.是.有关调试远程Groovy代码的一些问题.当动态加载Groovy代码时,通常会出现问题.在这种情况下,调试名称通常与源名称不匹配,调试器不知道如何将动态加载的类文件与原始源代码进行匹配.

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

所以,我的建议是,如果可能的话,你应该确保你的groovy代码在被发送到服务器之前进行了预编译. (还设置suspend = y.)

标签:java,eclipse,groovy,remote-debugging,sling
来源: https://codeday.me/bug/20190630/1334769.html