繁体   English   中英

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

[英]Eclipse plugin works when debugging but not when installing

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

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

这可能是你第一次只测试您的插件在目标平台IFIle具体延伸和补充IFolder后,但没有加载的更新插件到Eclipse,因为你并没有增加插件的版本,并没有与运行-clean (Eclipse需要重新加载你的插件)。

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

此外,而不是使用object instanceof IFileIFolder使用:

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

IFolder

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

你的问题:“我的问题是:我该怎么调试呢?”

我的回答:“远程调试”

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM