我试图在 Java 中获得动态类加载的经验。因此,欢迎任何意见和帮助。我有一个程序允许用户选择一个文件并对其执行一些操作。动作是“命令”,这些是我尝试加载的类。
它的工作方式是:用户将 .class 文件放在所需的文件夹中,我的程序检查文件夹中的文件,如果 .class 文件中有一个类,它会加载它。
我做到了,但不是我想要的。目前,它仅适用于使用我的程序编译的类。但我想要的是我可以将任何包含类的 .class 文件放在文件夹中,然后我的程序会加载它。这是我现在的代码:
for (int i = 0; i < fileList.length; i++) {
if (fileList[i].endsWith(".class")) {
/////MY FIRT TRY/////ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
ClassLoader classLoader = FileMod.class.getClassLoader();
// Define a class to be loaded.
String classNameToBeLoaded = fileList[i].replace(".class", "");
// Load the class
try {
/////MY FIRST TRY/////Class myClass = myClassLoader.loadClass(classNameToBeLoaded);
//if the class exists in the file
Class aClass = classLoader.loadClass(classNameToBeLoaded);
classList.add(aClass);
System.out.println("CLASS FOUND : " + classNameToBeLoaded + aClass.getSuperclass());
} catch (ClassNotFoundException e) {
System.out.println("CLASS NOT FOUND : " + classNameToBeLoaded);
continue;
}
}
}
如您所见,我尝试了两种方法,第一种方法目前在评论中。我所做的是检查文件夹中的每个文件并检查它是否是 .class 文件,如果是,我会尝试加载该类(如果有的话)。我猜这两者classLoaders
只能加载他们“知道”的文件,那我怎么能加载一个外部类。