我正在研究一些“ eclipse插件”,它打算提取一些有关源代码中使用的类型的信息。为此,我开始使用 Eclipse JDT “。插件逻辑如下:
1)选择您想要的项目:
IProject userDesiredProject = workspace.getProject(userDesiredProjectName);
IJavaProject userDesiredJavaProject = JavaCore.create(userDesiredProject);
2)选择所需的源代码文件(类似foo.java
):
for (IPackageFragment item : pfs)
{
try
{
if (item.getKind() == IPackageFragmentRoot.K_SOURCE && (userDesiredCompilationUnit = item.getCompilationUnit(primarySourceCode)) != null )
{
//* Now, our desired java class file (.java) is accessible using "userDesiredCompilationUnit" variable.
break;
}
}
catch (JavaModelException e)
{
e.printStackTrace();
}
}
包含userDesiredCompilationUnit
编译单元的3次使用foo.java
,以便使用getTypes()
方法捕获类型:
IType[] allTypes = null;
try
{
allTypes = userDesiredCompilationUnit.getAllTypes();
//CODE STUCKS HERE AND "JavaModelException" OCCURS.
}
catch (JavaModelException e)
{
//TODO Auto-generated catch block
e.printStackTrace();
}
但是,执行上述代码后,会出现JavaModelException
。重要的是要注意我已经测试userDesiredCompilationUnit
并且它包含正确的对象。
请帮帮我。 非常感谢。