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

标签 java eclipse groovy remote-debugging sling

我正在努力调试构建为 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,所以我无法在这里验证情况是否如此。

任何想法表示赞赏!

最佳答案

首先,一个建议。在 Xrunjdwp:transport 选项中设置 suspend=y。这将在 main 中挂起,并让您更好地了解问题是出在调试选项上还是出在 Groovy 代码上。

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

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

因此,我对您的建议是,如果可能,您应该确保您的 groovy 代码在发送到服务器之前已经过预编译。 (同时设置 suspend=y。)

关于java - 如何在 Eclipse 中通过远程 Java 应用程序调试来调试 Groovy 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9568957/

相关文章:

java - 错误:emulator-5554 disconnected:

java - Swing控件中文乱码,但俄文不乱码

java - 如何避免使用@SuppressWarnings?

linux - 在 linux 中从 groovy 执行 bash 脚本

java - JFrame:获得无边界的大小?

java - 是否有用于 java 的 dlib 库端口?

java - 增加 Windows 7 中的 SetWindowsHookEx 限制

gradle - 从 gradle/groovy 中的路径创建目录结构

Groovy 按周期拆分并仅返回第一个值

java - 使Maven构建更快的方法?