Eclipse插件在调试时有效,但在安装时无效

时间:2013-10-03 21:46:29

标签: java eclipse eclipse-plugin

我编写了一个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中。这令人非常沮丧。那好吧。获得的经验教训。
  3. 非常感谢所有提供帮助的人!

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您的代码假设ExecutionEvent中的值保持有效,直到您的线程运行,这可能不是这种情况。在execute方法中获取事件所需的所有内容,并将它们传递给工作线程。

而不是使用object instanceof IFileIFolder使用:

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

IFolder相同。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

我的回答:“远程调试”

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

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