すべてのプロジェクトのソースディレクトリのすべてのJavaタイプ(classe、interface、enum、annotation)をワークスペースの名前として指定する必要があります。たとえば、 "Test"という入力は、すべてのプロジェクトのソースディレクトリに定義された "Test"で始まるすべてのJava型を返します。私は上記のコードは、Eclipseワークスペースではなく、いくつかのJava型を返さEclipse JDT:Java Search Engine
SearchPattern pattern = SearchPattern.createPattern("Test",
IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS,
SearchPattern.R_PREFIX_MATCH);
IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
SearchRequestor requestor = new SearchRequestor() {
public void acceptSearchMatch(SearchMatch match) {
System.out.println("Found: " + match.getElement());
}
};
SearchEngine searchEngine = new SearchEngine();
try {
searchEngine.search(pattern, new SearchParticipant[] { SearchEngine
.getDefaultSearchParticipant() }, scope, requestor,
null);
} catch (CoreException e) {
e.printStackTrace();
}
次のようにJDTのSEARCHENGINEでこれを処理しようとしました。たとえば、次のように
見つかり:TestSimple(開かない)[TestSimple.classで[<デフォルトで>は、[/ホーム/私/テスト]]に]
TestSimple.javaでコマンドラインから作成されたファイルです私のホームディレクトリであり、Eclipseプロジェクトとは関係ありません。 (私のEclipseワークスペースは/ home/me/eclipse/workspaceで定義されています)なぜ検索結果にその理由が含まれているのかわかりません。 SearchEngineはこのシナリオを処理する最良の方法ですか、私はちょうどJavaの型名が必要なので、私はフィールド、メソッド、参照などのクラスの中に何も必要ありませんか?同様に参照されるライブラリから取得種類を避けるためにIPackageFragmentRoot#getKind()
からK_SOURCE
を返すのみを含むおかげ
申し訳ありません私はパス/ home/me/testがEclipseの1つのテストプロジェクトのビルドパスにあることを確認しました。それは問題ではありません。 2番目の質問に対する提案は感謝しています。 – CMZS
「SearchEngine」の代わりに、よりシンプルな['FileVisitor'](https://docs.oracle.com/javase/tutorial/essential/io/walk.html)を使用することを検討しましたか?とにかく必要ですか? –