gpt4 book ai didi

java - 有没有办法在不知道包名的情况下加载特定路径中的所有类?

转载 作者:行者123 更新时间:2023-12-02 04:30:24 26 4
gpt4 key购买 nike

我正在编写一个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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com