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