来自远程目录的Java Class.forName()

来自远程目录的Java Class.forName(),java,class,classpath,classloader,classnotfoundexception,Java,Class,Classpath,Classloader,Classnotfoundexception,我目前正在使用Class.forName()加载Java类 clazz = Class.forName("interfaces.MyClass"); 但现在我想从不同的目录加载类,我已经尝试通过 clazz = Class.forName("-cp \"C:/dir\" distantinterfaces.DistantClass"); 没有成功并且ClassNotFoundException。远程类的完整路径为: C:/dir/distantinterfaces/DistantClass.

我目前正在使用
Class.forName()
加载Java类

clazz = Class.forName("interfaces.MyClass");
但现在我想从不同的目录加载类,我已经尝试通过

clazz = Class.forName("-cp \"C:/dir\" distantinterfaces.DistantClass");
没有成功并且
ClassNotFoundException
。远程类的完整路径为:

C:/dir/distantinterfaces/DistantClass.class

目录在类路径中,您可以使用
Class.forName()
(它只接受完全限定的名称类,而不接受
-cp
命令行选项),或者它不在类路径中,然后您应该使用自定义类加载器

你并不是说你真正想做什么(为什么要动态加载类),但你最好的办法是把目录放在类路径中。

为此使用一个。代码可能大致如下:

File f = new File("C:/dir");
URL[] cp = {f.toURI().toURL()};
URLClassLoader urlcl = new URLClassLoader(cp);
Class clazz = urlcl.loadClass("distantinterfaces.DistantClass");

您必须创建一个ClassLoader实例,该实例知道包含类的目录。看