@SuppressWarnings("resource")
	public ArrayList<String> getAllClasses(String jarFile, String superclassName) throws FileNotFoundException, IOException, ClassNotFoundException {
		
		ArrayList<String> list = new ArrayList<>();
		
		JarInputStream jar = new JarInputStream(new FileInputStream(jarFile));
		JarEntry entry;

		while ((entry = jar.getNextJarEntry()) != null) {

			if (entry.getName().endsWith(".class") && !entry.isDirectory()) {

				String className = entry.getName();

				className = className.replace("\\", ".").replace("/", ".");
				className = className.substring(0, className.length() - 6);

				list.add(className);		
			}
		}

		
		ArrayList<String> classesList = new ArrayList<>();
		
		ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader();

		URLClassLoader urlClassLoader = new URLClassLoader(new URL[] { new URL("file:///" + jarFile) }, currentThreadClassLoader);
		
		for(String className : list) {
			
			Class<?> clazz = urlClassLoader.loadClass(className);
			if (clazz != null && clazz.getSuperclass() != null && clazz.getSuperclass().getName().equals(superclassName))
				classesList.add(className);
		}
		
		return classesList;
	}