仅加载类

时间:2014-05-03 17:43:37

标签: java

我开发了eclipse插件,对于任何给定的java项目,都以包结构的形式创建GUI。我已成功为不同的java项目运行我的插件。 现在,我认为应该在一些开源项目中尝试我的代码,因此,我下载了JDOM Framework。 但是,我发现JDOM源代码具有这种结构。

JDOM - >贡献 - > src - > java - >组织 - > jdom2 ......

我假设项目总是低于结构

项目名称 - > Src - >包裹名称在这里开始.....

我使用下面的代码

加载类
IPackageFragment[] packages = javaProject.getPackageFragments();
for (IPackageFragment mypackage : packages) {      
  if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) {
        for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
            // unit.getPath().toString() give me path, but how to extract only class name with package
            // save it in to MAP with Package as key
        }
   }
 }

现在,我想显示只有包名的类,因此,我删除前两个字符串(PROJECT NAME,SRC),但对于JDOM Framework,情况并非总是这样。

因此,如何使用上面的方法只获取包名和类名?或者我应该使用不同的机制吗?

2 个答案:

答案 0 :(得分:1)

单独查看目录结构似乎是一种非常容易出错的方法。谁知道目录树有多深?如果您扫描Java源文件,您应该能够构建一个在文件开头找到包声明的阅读器。如果没有,你不需要担心。我是否需要说您可以将包名称存储在HashSet中以避免重复的包声明?

答案 1 :(得分:1)

ICompilationUnitfindPrimaryType方法:

IType primaryType = unit.findPrimaryType();

ITypegetFullyQualifiedName()

String name = primaryType.getFullyQualifiedName();