我正在努力调试一个构建为 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 应用程序”,指向我的项目,连接类型为“标准(套接字连接)”,主机本地主机,端口 30303。此配置似乎启动正常 - 在至少,我没有收到任何反馈表明它没有 - 但我在 Groovy 代码中设置的断点实际上并没有中断对 Sling 应用程序的请求的执行。
我在各个论坛上看到过一些帖子,这些帖子显示人们在通过远程 Java 应用程序配置调试 Groovy 代码时遇到问题,而他们在 Java 代码方面没有问题。不幸的是,我的应用程序都是 Groovy 而没有 Java,所以我无法验证这里的情况是否如此。
任何想法表示赞赏!
首先,一个建议。放suspend=y
在您的 Xrunjdwp:transport 选项中。这将在 main 中挂起,并使您更好地了解问题是否出在调试选项或 Groovy 代码上。
现在,谈谈更复杂的事情。是的。远程 Groovy 代码的调试存在一些问题。该问题通常在动态加载 Groovy 代码时出现。在这种情况下,调试名称通常与源名称不匹配,并且调试器不知道如何将动态加载的类文件与原始源代码匹配。
这里描述了一个这样的问题(毫无疑问其他地方也发生类似的事情):https://jira.springsource.org/browse/SPR-7113 https://jira.springsource.org/browse/SPR-7113
所以,我给你的建议是,如果可能的话,你应该确保你的 groovy 代码在发送到服务器之前经过预编译。 (并且还设置suspend=y
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)