【问题标题】:Eclipse plugin works when debugging but not when installingEclipse 插件在调试时有效,但在安装时无效
【发布时间】:2013-10-10 18:40:13
【问题描述】:

我编写了一个 Eclipse 插件,它可以在任何文件或文件夹(例如,在导航器视图中)显示右键菜单选项。对于选定的每个文件(以及选定目录中的每个文件),插件都会计算并显示文件的 MD5、SHA-1、SHA-256、SHA-384 或 SHA-512 哈希值。当我在开发时进行调试时,该插件可以完美运行。

如果我使用 site.xml 创建站点,将其放在我的服务器上,然后安装到 Eclipse(它安装得很好),我会看到菜单。我可以计算并显示选定文件的哈希值,但它对于选定的文件夹不起作用。代码中绝对没有任何变化。它总是在调试模式下工作,而我安装它时它永远不会工作。

我的问题是:我该如何调试它?起初,我以为 Eclipse 的 workspace/.metadata/.log 文件会提供一些线索,但没有输出错误。我什至尝试添加一些将文件写入桌面的代码,但该文件永远不会被创建。有没有人知道发生了什么或我应该如何解决这个问题?我以前从来没有调试过这么难的!

作为参考,https://github.com/gfairchild/eclipse-hasher 是项目。所有源代码都可以在那里查看(可以作为 Eclipse 项目导入)。


答案最终涉及两件事:

  1. 在构建过程中我没有包含lib 目录。我使用的依赖项(Apache Commons Codec)不包括在内,所以它当然不会运行。
  2. 在测试过程中,我尝试手动将 Hasher 的构建放入 eclipse/plugins 中。我错误地假设如果我通过 Eclipse 界面卸载 Hasher,该文件将被删除。不是。所以在上个月,我有一个旧版本的 Hasher 被加载到 Eclipse 中。这令人难以置信的沮丧。那好吧。经验教训。

非常感谢所有提供帮助的人!

【问题讨论】:

  • 我刚刚在 Eclipse Kepler 上测试了您的项目,它工作正常(无论是在 IDE 中还是在导出时)。顺便说一句,您的项目缺少 MANIFEST.MF(需要运行/导出)。

标签: java eclipse eclipse-plugin


【解决方案1】:

您可能首先在目标平台上测试了您的插件,只使用了IFIle 特定扩展名,后来又添加了IFolder,但是更新的插件没有加载到 Eclipse,因为您没有增加插件的版本并且没有使用 -clean 运行它(Eclipse 需要重新加载您的插件)。

【讨论】:

  • 这当然是一个有趣的想法!我会尽快试试这个。
  • 好的,我终于有机会尝试使用-clean 运行 Eclipse,但这并没有解决问题。这里还有其他事情发生。
【解决方案2】:

我发现您的包装有问题。如果您通过任何 zip 软件打开 jar 文件,您会看到 lib 和 images 文件夹丢失。您需要在 build.properties 文件中添加这些文件夹的条目。此外,您需要将库添加到类路径(额外的类路径条目)如果您在进行这些更改后构建插件,它应该可以正常工作。

【讨论】:

  • 这终于奏效了!我以为我已经包含了 lib 目录,但我没有。谢谢!
【解决方案3】:

您的代码假设ExecutionEvent 中的值在您的线程运行之前保持有效,但情况可能并非如此。在 execute 方法中从事件中获取您需要的一切并将它们传递给工作线程。

也不要使用object instanceof IFileIFolder 使用:

IFile file = (IFile)Platform.getAdapterManager().getAdapter(object, IFile.class);

IFolder 也一样。

【讨论】:

【解决方案4】:

您的问题:“我的问题是:我该如何调试?”

我的回答:“远程调试”

您可能想在谷歌上搜索有关该主题的信息,但我鼓励您阅读以下blog entry,当有人问我如何在第一次安装 Eclipse 时调试代码时,我总是建议您阅读以下内容。这样做,您可以调试您的代码,以防万一您的第一个 eclipse 安装和您可能用于调试的第二个 eclipse 实例之间的环境有所不同(它们可能会有所不同,具体取决于您的目标平台设置和您的第二个实例启动配置)。

注意:如果您的具体问题是 greg 指出的与线程相关的问题,那么在第一个实例安装中调试您的代码将毫无用处。

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多