3

我编写了一个 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 中。这令人难以置信的沮丧。那好吧。学过的知识。

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

4

4 回答 4

2

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

于 2013-10-04T06:38:20.093 回答
1

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

于 2013-10-14T10:17:51.347 回答
1

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

也不要使用object instanceof IFileIFolder使用:

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

和同样的IFolder

于 2013-10-12T09:04:59.503 回答
0

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

我的回答:“远程调试”

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

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

于 2013-10-13T09:42:05.203 回答