如果包含来自另一个目录的包,如何识别 class

how to identified class if including package from another directory

来自 there,我使用 class 加载程序从其他目录 class 识别

File dir=new File ("D:\dirclass")
fulldir = new File (dir+"\myclass");
filename = new StringTokenizer(fulldir.getName(), ".").nextToken();
URL[] checkclass = 
{
    dir.toURI().toURL()
};
URLClassLoader urlcl = new URLClassLoader(checkclass);
Class cls = urlcl.loadClass(filename);

如果 class 没有包,这是可行的。

但是如果 class 有包,则无法 运行。

Exception in thread "main" java.lang.NoClassDefFoundError: packclass (wrongname: dirclass\packclass)

还有其他方法吗?

您必须将 类 的完全限定名称指定为 ClassLoader,例如:

Class cls = urlcl.loadClass("com.mypackage.MyClass");