該示例基於org.eclipse.jdt.internal。*類,因爲JDT SearchEngine API是全功能的,所以我認爲您不需要付出太多努力來完成此操作。在你的情況下,下面的代碼就足夠了:
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IProject plainProject = root.getProject("some project");
IJavaProject javaProject = JavaCore.create(plainProject);
try {
IType type = javaProject.findType("foo.bar.AnotherClass");
IField field = type.getField("z");
//IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { plainProject });
SearchPattern searchParttern = SearchPattern.createPattern(field,
IJavaSearchConstants.REFERENCES);
SearchRequestor requestor = new SearchRequestor() {
@Override
public void acceptSearchMatch(SearchMatch match) {
System.out.println(match.getElement());
}
};
SearchEngine searchEngine = new SearchEngine();
searchEngine.search(searchParttern,
new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope,
requestor, new NullProgressMonitor());
} catch (Exception e) {
// some exception handling you need to do
}
我編輯了你的代碼,使它適用於我。謝謝你的幫助。 – prosseek