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

2024-03-06

我正在努力调试一个构建为 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(使用前将#替换为@)

如何在 Eclipse 中通过远程 Java 应用程序调试来调试 Groovy 代码 的相关文章

随机推荐


  • 替换为前标记之间的新行

    我想转换 p Code is following p pre lt html gt br lt html gt pre to p Code is following p pre lt html gt lt html gt pre 我不知道如
  • 为什么 System.IO.File.Exists(string path) 返回 false?

    System IO File Exists string path 即使文件存在于指定路径上 也始终返回 false 可能的解决方案是什么 这很可能是一个权限问题 来自文档 http msdn microsoft com en us lib
  • 给定 3D 空间中的 N 个点,如何找到包含这 N 个点的最小球体?

    给定 3D 空间中的 N 个点 如何找到包含这 N 个点的最小球体 这个问题称为最小包围球问题 谷歌这个术语可以找到相关的教程和论文 这是一种实现 http www inf ethz ch personal gaertner minibal
  • 自定义 OpenFileDialog

    我正在用 C 开发 winforms 应用程序 我想要实现的是从用户那里获取一个文件 我正在使用以下代码 OpenFileDialog dlg new OpenFileDialog if dlg ShowDialog DialogResul
  • 是否可以从(函子成员的)函数签名中检索参数类型以在模板中使用?

    假设你有一个函子 struct MyFunctor bool operator int value return true 是否可以检索函子的成员参数类型以在模板中使用 以下是这个神话功能的使用 template lt typename F
  • android - 连接时套接字超时

    我正在尝试在 Android 上实现 tcp 客户端应用程序 当我尝试连接到 C 服务器时 套接字在尝试连接到服务器时超时 My code new Thread new ClientThread start try PrintWriter
  • 从字符数组更改为字符串时出现“字符串下标超出范围”错误?

    我开始使用字符串代替字符数组 当我将大小为 5 定义的字符数组之一更改为字符串时遇到错误 我在尝试运行程序时得到的错误是 表达式 字符串下标超出范围 newWord 最初是一个字符数组 但将其更改为字符串后 我收到此错误 我不明白是什么原因
  • 为什么这个补码捷径有效?

    形成二进制数的补码的一种捷径方法是从右侧复制位 直到复制了一位 然后对剩余位求补 反转 这在SO上有解释here https stackoverflow com questions 33592801 converting binary to
  • 如何获取字符串中可能重叠的匹配项

    我正在寻找一种方法 无论是在 Ruby 还是 Javascript 中 它都能为我提供字符串中与正则表达式匹配的所有匹配项 可能重叠 假设我有str abcadc 我想找到出现的a后跟任意数量的字符 后跟c 我正在寻找的结果是 abc ad
  • 根据其他常数定义一个常数

    很抱歉 如果这个问题看起来很幼稚 但我无法在任何地方找到明确的答案 我必须根据先前定义的常量定义一个常量 例如 define CONST A 2 define CONST B 3 define CONST C CONST A CONST B
  • PHP die() 清理所有页面

    一道php die函数问题 当我使用 die 时 它会清除所有页面元素 有什么方法可以回显错误消息而不清理所有页面 当我使用 die 停止代码并调出消息时 它看起来像是跳转到另一个页面 这是我的代码
  • 平凡的析构函数会导致别名吗

    C 11 3 8 1 声明 对于具有简单析构函数的对象 我可以通过分配其存储来结束其生命周期 我想知道微不足道的析构函数是否可以延长对象的生命周期 并通过 销毁一个我更早结束生命周期的对象 来导致别名问题 首先 我知道一些东西是安全且无别名
  • 在 VS Code 中调试时观察窗口或计算表达式?

    我很喜欢视觉工作室代码 https code visualstudio com 它是一个很棒的编辑器 但在调试 Node 应用程序时有一件事确实让我烦恼 我看不到任何类型的监视窗口或在调试时评估表达式的能力 这使得调试非常痛苦 我正在考虑回
  • 天蓝色通知中心 - 应用程序卸载

    我想使用 Azure 通知中心向跨 iOS Android 和 Windows Phone 运行我的应用程序的用户发送推送通知 我已经成功地完成了基础工作 但我不知道如何管理应用程序卸载故事 启动时 移动应用程序将调用我的 Identity
  • 是否可以手动销毁SurfaceView?

    即使调用活动的 onPause 我的 SurfaceView 也不会被破坏 我正在处理中的线程 public void surfaceCreated SurfaceHolder holder if mGameThread getState
  • R Shiny:通过循环添加到绘图

    我正在尝试创建一个使用 Shiny 显示采样方式动画的应用程序 与所示示例类似的内容here http onlinestatbook com stat sim sampling dist 这是一些最小的代码 仅显示我遇到问题的部分 这不是我
  • CakePHP 链接 css 文件和 javascript 文件

    如何将 css 文件和 javascript jquery 文件链接到控制器 视图 我正在使用 CakePHP 1 3 并在网上找到了以下代码 但我似乎无法弄清楚将其放在哪里 其次 将名为 css file 的 css 文件放在哪里 任何帮
  • OSX Play 框架自动重新加载

    我已经在互联网上搜索了几个小时 有很多 有用 的建议 但只会带来问题 这就是我 几乎一模一样 在docker容器中播放框架自动加载 https stackoverflow com questions 26022395 play framew
  • Ansible - 包含来自远程主机的 vars 文件

    我想包含远程主机上文件中的变量 而不是 Ansible 运行的控制机上的变量 例如我有一个文件 var database credentials yml 在我的网络服务器上 将该文件中的变量添加到主机变量以便我可以在模板中使用它们的最佳方法
  • 如何在 Eclipse 中通过远程 Java 应用程序调试来调试 Groovy 代码

    我正在努力调试一个构建为 Sling 捆绑包的应用程序 该应用程序几乎完全是 Groovy 代码 我有 Groovy Eclipse 插件 Eclipse 使用 Maven 正在构建 jar 并将其安装在 Sling 中 没有任何问题 但是