今天在做插件开发的时,在工程视图中需要判断工程的类型。当工程关闭时候。eclipse以Project类对象管理工程。开始以为Project .getNature(String natureid)可以解决问题。但是一直报工程未打开的错误。所以换一种思路。
1、通过Project.getWorkspace获取 Workspace 然后再获取NatureManager
2、通过 NatureManager.isNatureEnable(Project,Natureid)判断工程的类型。
3、一下是具体代码
//当工程已经关闭,需要通过workspace中的NatureManager判断
if (element instanceof Project) {
Project project = (Project) element;
try {
Workspace workspace = (Workspace) project.getWorkspace();
workspace.loadProjectDescription(project.getLocation().append(".project"));
if (workspace.getNatureManager().isNatureEnabled(project,
natureString)) {
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
}
}
问题补充:代码还有一个bug 就是当eclipse关闭,再打开时候,eclipse不会自动去加载.project文件。所以需要我们手动调用workspace.loadProjectDescription()方法加载.project 方法。才能判断工程类型。
本文介绍了一种在Eclipse中判断已关闭工程类型的实用方法。通过获取Workspace并使用NatureManager来判断工程是否具备特定性质,解决了Project.getNature在工程关闭时无法使用的难题。

被折叠的 条评论
为什么被折叠?



