在Eclipse的PDE,什么时候创建寻找资源的变化(使用IResourceChangeEvent
),我怎么找出来的时候一个项目?在这种情况下,我可以访问该项目吗?(作为IProject
)?Eclipse项目创建检测
回答
几个部分这样的回答:
当资源的变化,你的听众得到的事件。从这个事件中,你可以得到一个描述变化资源的变量。你实现了一个访问者(用accept()方法传递给delta),它实际上实现了你对变化的响应,并通过从它的visit()方法回答一个布尔值来控制你想要遍历的delta增量。由于任何新项目都将位于三角洲的顶部,因此您可能不会走得太远。一旦你意识到你正在访问代表新项目的delta节点(你使用flags()和getKind()来查看它是否是一个新项目),你可以采取任何你想要的操作。
这个答案的另一部分是提醒你经常资源的变化是成批的,通常是出于性能的考虑,所以你可能会经过很多文件被创建到该项目正在创建通知新项目。
来补充参考资源变化监听对方的回答...
可靠地检测项目创建实际上是相当困难的。问题在于你定义为项目创建。对于Eclipse资源层,项目创建是在创建空白项目时(没有任何类型的元数据或文件),但是在典型情况下,您想知道何时创建特定类型的项目。
这意味着你不能假定,当你的代码接收一个项目创建活动,你将能够询问有关该项目的问题。项目创建事件可能与单个批次中的后续文件事件一起传递,或者这些事件可能会分开滴入。
另一个考虑是Eclipse项目的创建有许多不同的场景。它可以是用户运行项目创建向导,或从磁盘导入现有项目,或从Git导入,或者任何其他方式,第三方插件可能会导致项目添加到工作区。每个这些情景将有哪些事件是成批的或细流以稍微不同的方式。
唯一的解决办法是看文件的事件,而不是项目事件。找出您的听众需要询问项目的问题,然后找出哪些文件包含答案并跟踪这些文件。例如,如果您需要检查自然和类路径条目,请监视.project和.classpath文件。不要以为项目总是处于一致的状态。如果您正在通过Git导入部分查看它,可能不会。
- 1. 创建eclipse建模项目
- 2. 从旧项目创建eclipse项目
- 3. Android创建项目Eclipse
- 4. 创建Eclipse Java Gradle项目
- 5. 创建GAE eclipse项目
- 6. 创建Eclipse项目预设
- 7. Eclipse PDE创建新项目
- 8. 在Eclipse中创建一个项目(我们想测试)的测试项目?
- 9. Maven项目的创建 - 虽然从Eclipse创建项目失败
- 10. 创建测试项目
- 11. 检测谁创建了线程(w。Eclipse)
- 12. 在Eclipse中创建一个Android测试项目
- 13. Eclipse的ADT插件无法创建Android测试项目
- 14. 在Eclipse中创建新的Android测试项目时出错
- 15. 在eclipse中创建一个新项目
- 16. 无法使用eclipse创建cloudbees项目
- 17. 在eclipse中创建java/C++项目
- 18. 在Eclipse中为项目创建jar
- 19. 关注在Eclipse中创建Java项目
- 20. 用java程序创建Eclipse java项目
- 21. 在Eclipse中创建新的PHP项目
- 22. 使用Eclipse创建Camel项目
- 23. 无法使用Eclipse创建MapReduce项目
- 24. 如何使用EGit创建Eclipse项目
- 25. 创建Android项目在Eclipse中
- 26. Eclipse不会创建一个Android项目
- 27. 创建没有eclipse的Java项目?
- 28. 创建Android项目后Eclipse Juno崩溃
- 29. eclipse为tfs创建团队项目
- 30. 使用eclipse创建新的svn项目
谢谢克里斯, 偶然,你知道我该如何强制这样的事件吗?为了确保项目刚创建并且没有批处理? –
参见http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html – nitind
无论发生什么事件都会发生。只是,如果该工具批量处理一堆资源模块,那么您将使用增量树来调用一次。访问者递归地遍历(见上),并且该树中的增量将代表该项目。换句话说,在用户重新获得对UI的控制之前,你总是会被调用。 –