从Eclipse中的当前工作空间获取所有类

spa*_*row 8 java eclipse plugins class

我正在编写Eclipse插件,我试图创建一个方法,在ArrayList <\ Class <\?>>中返回工作空间中的所有类(我添加了"\"以包含通用括号,因为html不会让我这样做吧.

这是我的代码:

private ArrayList<Class<?>> getAllClasses() throws JavaModelException {

 ArrayList<Class<?>> classList = new ArrayList<Class<?>>();

 IWorkspace workspace = ResourcesPlugin.getWorkspace();
 IWorkspaceRoot root = workspace.getRoot();
 IProject[] projects = root.getProjects();

 for (IProject project : projects) {
  IJavaProject javaProject = JavaCore.create(project);
  IPackageFragment[] packages = javaProject.getPackageFragments();

  for (IPackageFragment myPackage : packages) {
   IClassFile[] classes = myPackage.getClassFiles();

   for (IClassFile myClass : classes) {
    classList.add(myClass.getClass());
   }
  }
 }

    return classList;
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不起作用.我有一些印刷线,我发现它还包括不相关的类(即来自Java\jre6\lib\rt.jar的类).有什么建议?

小智 0

也许您可以使用 IJavaProject.getAllPackageFragmentRoots() 方法来获取所有源文件夹,然后在其中获取 ICompilationUnits 。