13

这是我第一次尝试创建 Eclipse 插件。我已经创建了一个,以及一个功能和更新站点。我将目标平台设置为我的本地 Eclipse 安装。当我从开发环境中运行/调试插件时,一切正常。

现在,我的同事从我托管的更新站点安装了插件。当他开始使用我的插件公开的任何功能时,他会遇到运行时异常。

  1. 他看到了当我从开发环境运行插件项目时没有发生的空指针异常。
  2. 我有一个向导,它是我插件的一部分。当他关闭它时,他得到一个“未处理的事件循环异常”,并且向导没有关闭。我在开发环境中运行/调试插件时没有这个问题。

现在我很困惑为什么同一个插件在生产环境中表现不同,而不是在开发环境中以及当我从我的 IDE 调试它时。两种情况下的目标平台都是相同的 Eclipse 版本。可能是什么原因?

以及如何在生产环境中调试插件?是否有远程调试生产环境插件的能力?任何建议都会非常有用!

4

4 回答 4

19

要远程调试您的插件,首先将调试参数添加到您的目标 Eclipse .ini 文件

-vmargs
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044

在启动它之前。

然后打开另一个 Eclipse 实例,其工作空间包含您的插件项目。打开Run > Debug Configurations...,选择Remote Java Application并创建一个新配置。

作为Project,浏览并选择您的插件项目。还要填写您的连接属性(目标 Eclipse 的主机端口1044)。

启动新创建的调试配置允许您以与本地调试相同的方式调试插件。

于 2012-11-11T10:41:30.540 回答
2

现在我很困惑为什么同一个插件在生产环境中表现不同,而不是在开发环境中以及当我从我的 IDE 调试它时。两种情况下的目标平台都是相同的 eclipse 版本。可能是什么原因?

这是一个经典:Eclipse 插件和 RCP 应用程序在 PDT(Eclipse IDE)和导出产品之间的行为确实不同。

在您的情况下,从导出版本但不是从 Eclipse 抛出的 NullPointerException 是由您的代码加载但未在您的 build.properties 中列出的图像或其他资源文件(属性等)的 10 次中的 9 次插入。

无论如何,您需要检查日志以检索堆栈跟踪并找出其原因。此类日志可以在您朋友的工作区中的 le.metadata/.log文件下找到

于 2012-11-11T12:33:10.910 回答
0

从您现在的开发工作区中,使用“Debug As -> Eclipse Application”菜单项来启动一个测试工作区。当它启动时,您将运行两个工作区:原始开发工作区和新的测试工作区。您可以在开发工作区的插件代码中设置断点,并在测试工作区运行您的插件。

当您在测试工作区中的插件执行到达您的断点之一时,执行将暂停,您可以使用开发工作区中的调试视图查看变量、设置更多断点或您想要执行的任何其他操作来调试插件。

于 2012-11-10T18:18:42.947 回答
0

请参阅使用 Eclipse 进行开发的 Apache Wiki

在 Windows 10 下,Tomcat 作为 Windows 服务运行,我启动了:

tomcat8.5\bin\Tomcat8w.exe

& 添加到Java选项卡中作为 Java 选项中的一个条目以启用远程调试:

-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

于 2017-11-09T13:06:13.870 回答