2010-06-21 66 views
2

我有以下這個Java程序,它從目錄返回某些類。我想找到這些類的軟件包名稱..我可以做到這一點?任何代碼都會有幫助。從類中獲取包名

import java.util.*; 
import java.io.*; 

public class CreateTestPackage 
{ 
    public void execute() 
    { 
     List<Class> findClasses(File directory) throws ClassNotFoundException 
     { 

      List<Class> classes = new ArrayList<Class>(); 
      if (!directory.exists()) 
      { 
       return classes; 
      } 
      File[] files = directory.listFiles(new FilenameFilter() 
      { 
       public boolean accept(File dir, String name) 
       { 
        return name.matches("test.*\\.class"); 
       } 
      }); 
      for (File file : files) 
      { 
       if (file.isDirectory()) 
       { 
        assert !file.getName().contains("."); 
        classes.addAll(findClasses(file)); 
       } 
       else if (file.getName().endsWith(".class")) 
       { 
        classes.add(Class.forName(file.getName().substring(0, file.getName().length() - 6))); 
       } 
      } 
      return classes; 
     } 
    } 




} 

回答

2
for(Class c : classes) { 
    c.getPackage().getName(); 
} 
+0

感謝邁克 我收到此錯誤語法錯誤,插入 「;」完成LocalVariableDeclarationStatement List findClasses(文件目錄)拋出ClassNotFoundException – Jony 2010-06-21 18:43:26

+0

Codenotguru只需添加一個「;」在「c.getPackage()。getName()」末尾「 – Khanser 2010-06-21 19:47:25

+0

什麼Khanser說... – Mike 2010-06-21 23:11:16