I hava just a bad solution, but it would be greate to find something better:


  |     public static Class[] getClassesFromPackage(final String 
strPackageName) throws ClassNotFoundException
  |     {
  |         ArrayList<Class> classes = new ArrayList<Class>();
  |         // Get a File object for the package
  |         File directory = null;
  |         String[] files = null;
  |         try
  |         {
  |             ClassLoader cld = 
Thread.currentThread().getContextClassLoader();
  |             if (cld == null)
  |             {
  |                 throw new ClassNotFoundException("Can't get class loader.");
  |             }
  |             String path = strPackageName.replace('.', '/');
  |             //String path = '/' + pckgname.replace('.', '/');
  |             URL resource = cld.getResource(path);
  |             if (resource == null)
  |             {
  |                 throw new ClassNotFoundException("No resource for " + path);
  |             }
  |             if(resource.getPath().contains("!"))
  |             {
  |                     String[] arZipPath = resource.getPath().split("\\!");
  |                     if(arZipPath.length >= 1)
  |                     {
  |                             String strZipPath = 
arZipPath[0].substring(6);//cut up 'file:/'
  |                             try {
  |                                             JarFile jarFile = new 
JarFile(new File(strZipPath));
  |                                             List<String> lClassNames = new 
ArrayList<String>();
  |                                             for ( Enumeration e = 
jarFile.entries(); e.hasMoreElements(); )
  |                                             {
  |                                                     JarEntry target = 
(JarEntry) e.nextElement();
  |                                                     String strTargetName = 
target.getName();
  |                                                     
if(strTargetName.endsWith(".class") && strTargetName.startsWith(path + "/") && 
!target.isDirectory())
  |                                                     {
  |                                                             String 
strClassName = strTargetName.substring(path.length()+1);
  |                                                             
if(!strClassName.contains("/"))
  |                                                                     
lClassNames.add(strClassName);
  |                                                     }
  |                                                     
  |                                             }
  |                                             files = 
(String[])lClassNames.toArray(new String[lClassNames.size()]);
  |                                     } 
  |                             catch (IOException e) 
  |                                     {
  |                                 throw new 
ClassNotFoundException(strPackageName + " (" + strZipPath + ") does not appear 
to be a valid (JAR-) package");
  |                                     }
  |                     }
  |             }
  |             else
  |             {
  |                     directory = new File(resource.getFile());
  |                     if (directory.exists())
  |                 {
  |                     // Get the list of the files contained in the package
  |                     files = directory.list();
  |                     Arrays.sort(files);
  |                 }
  |                 else
  |                 {
  |                     throw new ClassNotFoundException(strPackageName + " 
does not appear to be a valid package");
  |                 }
  |             }
  |         }
  |         catch (NullPointerException x)
  |         {
  |             throw new ClassNotFoundException(strPackageName + " (" + 
directory + ") does not appear to be a valid package");
  |         }
  |             for (int i = 0; i < files.length; i++)
  |             {
  |                 // we are only interested in .class files
  |                 if (files.endsWith(".class"))
  |                 {
  |                     // removes the .class extension
  |                     try 
  |                     {
  |                                             
classes.add(Class.forName(strPackageName + '.' + files.substring(0, 
files.length() - 6)));
  |                                     } 
  |                     catch (Exception e) {}
  |                 }
  |             }
  |         
  |         Class[] classesA = new Class[classes.size()];
  |         classes.toArray(classesA);
  |         return classesA;
  |     }
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4015698#4015698

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4015698
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to