我在 Java 中的类加载有一些问题。在我的项目中,我试图从任何地方动态加载一个类。但是,我目前无法加载硬编码的文件,并且经过 6 小时的谷歌搜索和堆栈溢出检查后仍然一无所知。
我怀疑我正在加载的类的包名有问题。我的目标是在project/resources/dynamicFolderNonInClassPath/loadThis目录中加载 Class LoadAClass.java 。由于我将我的 URLClassLoader 设置为上面的文件夹,因此它的包已设置为
package loadThis;
public class LoadAClass{
static{
System.out.println("I am loaded");
}
(...)
}
但是我不断收到一个类未找到异常。
File file = new File("C:/Users/Robert/Documents/workspace/project/resources/dynamicFolderNonInClassPath/");
if (!file.exists()) System.out.println("typo!"); //debug print
URL url = file.toURI().toURL();
URLClassLoader loader = new URLClassLoader(new URL[]{url});
String classToBeLoaded = "loadThis.LoadAClass";
Class classy = loader.loadClass(classToBeLoaded);
System.out.println(classy.getCanonicalName()); //debug print
我尝试了不同的组合,例如直接将 URLClassLoader 设置为文件或将完整的/resources/dynamicFolderNonInClassPath/loadThis作为 URL 但到目前为止没有成功。
有圣诞气氛的人看到问题了吗?我对这个功能似乎有一些误解,我希望看到它得到修复。