微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过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.)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐