今天在做插件开发的时,在工程视图中需要判断工程的类型。当工程关闭时候。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 方法。才能判断工程类型。