我正在编写一个java应用程序,对文本文件执行一些操作。我将在我的应用程序中添加一项功能,可以使用用户的操作并对文件进行操作。我强制他们实现我的接口(interface),以将他们的方法名称掌握在我手中。并强制他们将类文件放在特定的路径中以将它们加载到我的应用程序中,但我不知道如何获取用户类的包名称以使用方法 class.forName(packageName.ClassName) 加载它们
。
有没有办法在不知道包名的情况下加载特定路径中的所有类?
最佳答案
类的名称是从 JarEntry 中提取的。
JarFile jarFile = new JarFile(JarPath);
Enumeration e = jarFile.entries();
URL[] urls = { new URL("jar:file:" + pathToJar+"!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls);
while (e.hasMoreElements()) {
JarEntry je = (JarEntry) e.nextElement();
if(je.isDirectory() || !je.getName().endsWith(".class")){
continue;
}
// -6 because of .class
String className = je.getName().substring(0,je.getName().length()-6);
className = className.replace('/', '.');
Class c = cl.loadClass(className);
}
关于java - 有没有办法在不知道包名的情况下加载特定路径中的所有类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31554401/