【发布时间】:2012-12-21 22:52:36
【问题描述】:
我在 Java 中的类加载方面遇到了一些问题。在我的项目中,我试图从任何地方动态加载一个类。但是,我目前无法加载硬编码的文件,并且经过 6 小时的谷歌搜索和堆栈溢出检查后仍然一无所知。
我怀疑我正在加载的类的包名有问题。 我的目标是在 project/resources/dynamicFolderNonInClassPath/loadThis 目录中加载类 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,但到目前为止没有成功。
有圣诞气氛的人发现问题了吗?我对这个功能似乎有一些误解,我希望看到它得到修复。
【问题讨论】:
标签: java dynamic classloader urlclassloader classnotfound