Code: Show/Hide File file = new File("modules"); URL url = file.toURL(); URL[] urls = new URL[]{url}; ClassLoader cl = new URLClassLoader(urls); Class cls = cl.loadClass(moduleName); cls.newInstance(); System.out.println("Loaded module: " + moduleName); |
Code: Show/Hide //dynamically create clases from string public static Object createObject(String className) { Object object = null; try { Class classDefinition = Class.forName(className); object = classDefinition.newInstance(); } catch (InstantiationException e) { System.out.println(e); } catch (IllegalAccessException e) { System.out.println(e); } catch (ClassNotFoundException e) { System.out.println(e); } return object; } //get program direcotry public static String getProgramDirectory() { return new File(new File("t.tmp").getAbsolutePath()).getParentFile().getAbsolutePath(); } //get list of modules in folder public static List<Object> getModuleList(String modulePath) { Vector<Object> result = new Vector<Object>(); //get plugin directory File dir = new File(utils.getProgramDirectory() + ("." + modulePath).replace('.', File.separatorChar) ); // The list of files can also be retrieved as File objects File[] files = dir.listFiles(); // This filter only returns directories FileFilter fileFilter = new FileFilter() { public boolean accept(File file) { if (file.getName().endsWith(".class")) { return file.isFile(); } return false; } }; files = dir.listFiles(fileFilter); for(File f1 :files) { result.add(utils.createObject(modulePath + f1.getName().replace(".class", ""))); } return result; } |
Code: Show/Hide private void attachServerEventListeners(Server s1){ //get plugin directory File dir = new File(utils.getProgramDirectory() + ".com.playSubSpace.TCPBiller.Plugins.Server".replace('.', File.separatorChar) ); // The list of files can also be retrieved as File objects File[] files = dir.listFiles(); // This filter only returns directories FileFilter fileFilter = new FileFilter() { public boolean accept(File file) { if (file.getName().endsWith(".class")) { return file.isFile(); } return false; } }; files = dir.listFiles(fileFilter); for(File f1 :files) { IServerListener temp = (IServerListener)utils.createObject( "com.playSubSpace.TCPBiller.Plugins.Server."+ f1.getName().replace(".class", "") ) ; System.out.println("Loading Server Command Module:" + f1.getName().replace(".class", "") ); s1.addServerListener(temp); } } |