public static Class<?>[] classesFromDirectory(File directory) { URL[] urls = null; try { urls = new URL[] {directory.toURI().toURL()}; } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } List<Class<?>> foundClasses = new ArrayList<>(); try (FileClassLoader urlLoader = new FileClassLoader(urls, ClassLoader.getSystemClassLoader())) { for (File possibleClassFile : directory.listFiles()) { if (possibleClassFile.isFile()) { try { foundClasses.add(urlLoader.createClass(possibleClassFile)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { foundClasses.addAll(Arrays.asList(classesFromDirectory(possibleClassFile))); } } } catch (IOException e1) { e1.printStackTrace(); } Class<?>[] classesA = new Class[foundClasses.size()]; foundClasses.toArray(classesA); return classesA; }
/** Adds a new location to the list of configured locations. */ private void addFile(File file) { file = file.getAbsoluteFile(); if (pathFiles.contains(file)) { return; } if (classLoader != null) { try { classLoader.addURL(file.toURI().toURL()); } catch (MalformedURLException ex) { return; } } pathFiles.add(file); }