如何从 Eclipse RCP 到“主机”Eclipse IDE 进行通信

Posted

技术标签:

【中文标题】如何从 Eclipse RCP 到“主机”Eclipse IDE 进行通信【英文标题】:How to communicate from Eclipse RCP to the 'host' Eclipse IDE 【发布时间】:2013-10-22 11:21:39 【问题描述】:

我有一个 Eclipse RCP 应用程序,它已从 Eclipse IDE 以调试模式启动。我在RCP 应用程序中创建了一个简单的SWT TreeViewer 控件,用于显示Throwable 的原因链和堆栈跟踪。我想要的是,如果开发人员在查看器中双击 StackTraceElement,那么“主机”Eclipse IDE 将在正确的行号处打开相应的文件。

到目前为止我最好的解决方法是我可以将StackTraceElement 打印到控制台(IDE 的),然后单击(filename.java:linenumber) 以这种方式打开文件。

我的问题分为两部分:

    是否存在从 RCP 应用程序(在调试模式下,如果这很重要)返回主机 IDE 的任何内置通信路径? 如果有这样的路径,是否有一些命令可以指示 IDE 在正确的位置打开文件?

我知道我可以编写一个在 IDE 中使用的插件,然后我可以通过套接字或类似的东西与它通信。我更感兴趣的是发现我可以使用的任何内置功能。

【问题讨论】:

您所做的目的有点不清楚。这是否仅与调试有关,还是您提到的 RCP 的预期行为? RCP 应用程序捕获它自己的异常并显示它的所有详细信息是一种预期行为。在开发人员调试 RCP 应用程序时,最好影响主机 Eclipse IDE 打开从 StackTraceElements 引用的文件,这些文件可从 Exception 访问。 一种简单的替代方法是添加 Java 异常断点(例如,通过“断点”视图中的“J!”按钮),并使用“主机”调试器导航调用堆栈. 感谢@Andy 的建议,但这并不是我想到的用例的替代方案。把它想象成当你得到一个异常并对控制台执行 e.printStackTrace() 时。在查看堆栈跟踪时,您会看到文件名:行号引用,并且您希望打开这些文件以查看代码。当然,我可以使用异常断点再次运行应用程序,但这与在事件发生后查看异常记录不同。 【参考方案1】:

如果您描述的 RCP 是在主机 IDE 中运行的单独插件,那么通信将非常简单,并且是 Eclipse 功能的一部分。但是你描述的是两个java进程之间的通信,那是另一回事。当然有办法,谷歌“java进程间通信”,但我想不出任何简单易行的方法。我不知道你愿意做多少额外的工作只是为了让你的应用程序更容易调试。

您可能还想看看远程调试。这将允许您独立于 Eclipse 运行您的 RCP 应用程序,并且仍然能够进行调试。见this questions for more info

【讨论】:

谢谢。我意识到 Java 进程是独立的,但由于两者之间已经存在通信路径(至少在使用调试器时),我希望有一些我可以使用的东西。自从提出我的问题后,我发现这个github.com/marook/eclipse-remote-control 肯定会有所帮助(除了 GPL 许可证是一个问题)。

以上是关于如何从 Eclipse RCP 到“主机”Eclipse IDE 进行通信的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse PDE 中表达项目间依赖关系

在 Eclipse RCP 3.x 中将信息从一个实例复制并粘贴到另一个实例

如何将透视栏切换器添加到纯 eclipse 4 rcp 应用程序

构建支持 Eclipse 项目的 RCP

使用最新插件启动eclipse RCP应用程序时出错(Eclipse 4.8)

使用rcp命令实现从远程机器拷贝文件