我正在努力调试一个构建为Sling bundle的应用程序。该应用程序几乎完全由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中设置一个调试配置项,类型为“Remote Java Application”,指向我的项目,连接类型为“标准(Socket Attach)”,主机名为localhost,端口号为30303。这个配置看起来启动正常——至少,我没有收到任何反馈表明它没有启动——但是我在Groovy代码中设置的断点实际上并没有停止Sling应用程序的请求执行。
我在各种论坛上看到了一些帖子,显示人们在通过远程Java应用程序配置调试Groovy代码时遇到了问题,而他们在调试Java代码时则没有问题。不幸的是,我的应用程序全部都是Groovy,没有Java,所以我无法验证这种情况是否存在。
欢迎提出任何想法!
suspend=y
选项告诉我调试选项正在工作(它等待Eclipse开始调试,然后成功启动)。因此看起来问题出在Groovy上。您的预编译建议很好,但我相当确定我的Groovy代码已经被预编译了 - 至少Maven构建输出声称正在编译它们。 - Nick Golding