JDT SearchEngineを使用して、特定のオブジェクトへの参照を検索しようとしています。しかし、org.eclipse.jdt.core.search.SearchEngineの「search」メソッドを呼び出しているときに「NullPointerException」が発生します。
エラートレースは次のとおりです。
org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:515)のorg.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:214)のjava.lang.NullPointerException )org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:582)で
そして、以下は私が検索を実行するために使用している方法です:
private static void search(String elementName) { //elementName -> a method Name
try {
SearchPattern pattern = SearchPattern.createPattern(elementName, IJavaSearchConstants.METHOD,
IJavaSearchConstants.REFERENCES, SearchPattern.R_PATTERN_MATCH);
IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
SearchRequestor requestor = new SearchRequestor() {
@Override
public void acceptSearchMatch(SearchMatch match) {
System.out.println("Element - " + match.getElement());
}
};
SearchEngine searchEngine = new SearchEngine();
SearchParticipant[] searchParticipants = new SearchParticipant[] { SearchEngine
.getDefaultSearchParticipant() };
searchEngine.search(pattern, searchParticipants, scope, requestor, null);
} catch (Exception e) {
e.printStackTrace();
}
}
次のスナップショットの「変数」ウィンドウを参照して、「searchEngine.search()」に渡される引数の値を確認してください。
問題は「スコープ」の値によるものだと思います[上記の「黒」で強調表示]。つまり、この場合、「SearchEngine.createWorkspaceScope()」は期待値を返しません。
注:これは、JDT APIを使用して(JDT-ASTを使用して)特定のソースコードを解析するスタンドアロンのJavaプログラム(Eclipseプラグインではない)として実行される私のプログラムの一部であることに注意してください。
そのような場合(Eclipseプラグインプログラムではない)にJDT SearchEngineを使用することはできませんか、それとも他の理由によるこの問題ですか?これについてのあなたの答えに本当に感謝します。