クラス A と、Eclipse ワークスペースで A を継承するクラス B があります。
私が抱えている問題は、Eclipse JDT API を使用してタイプ B のスーパータイプを取得しようとしたときに何も得られなかったことです。これはコードです(私はコードを取得しました -完全修飾名を持つすべてのサブクラスをリストします):
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
java.io.File workspaceDirectory = root.getLocation().toFile();
// 1. The name of the project in the workspace
IProgressMonitor pm = new NullProgressMonitor();
IProject orig = root.getProject(this.projectName);
orig.open(pm);
this.javaProject = JavaCore.create(orig);
orig.refreshLocal(IResource.DEPTH_INFINITE, pm);
// 2. Find the type
IType type = this.javaProject.findType("p.B"); <-- returns correct type info
ITypeHierarchy hier = type.newSupertypeHierarchy(new NullProgressMonitor());
IType[] types = hier.getAllSuperclasses(type);
System.out.println(types); <-- Returns []
パッケージ内のリソースを更新/更新するコードも追加しました。
IPackageFragmentRoot[] packageFragmentRoots = this.javaProject.getPackageFragmentRoots();
for (IPackageFragmentRoot proot: packageFragmentRoots)
{
proot.getResource().refreshLocal(IResource.DEPTH_INFINITE, null);
}
階層型情報を取得することを除いて、すべて正常に機能します。何が間違っている可能性がありますか? API を実行する前に設定を忘れていませんか?
私のはヘッドレス RCP アプリケーションです。