Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何加载和初始化类/jar/。。。在运行时,即使它不在类路径中?_Java_Url_Reflection_Classloader - Fatal编程技术网

Java 如何加载和初始化类/jar/。。。在运行时,即使它不在类路径中?

Java 如何加载和初始化类/jar/。。。在运行时,即使它不在类路径中?,java,url,reflection,classloader,Java,Url,Reflection,Classloader,我想初始化一个在编译过程中未知的类(但实现了一个已知的接口) 所以我试过这样的方法: Class<?> cls = class.foreName("NotKnown",true,ClassLoader.getSystemClassLoader()); Class cls=Class.foreName(“NotKnown”,true,ClassLoader.getSystemClassLoader()); 它在Eclipse中工作,但作为一个可运行的jar文件,我发现它不起作用,因

我想初始化一个在编译过程中未知的类(但实现了一个已知的接口)

所以我试过这样的方法:

Class<?> cls = class.foreName("NotKnown",true,ClassLoader.getSystemClassLoader());
Class cls=Class.foreName(“NotKnown”,true,ClassLoader.getSystemClassLoader());
它在Eclipse中工作,但作为一个可运行的jar文件,我发现它不起作用,因为它不会加载超出类路径的类


如何使其工作?

您需要创建新的类加载器,从新类所在的文件夹中加载类:

ClassLoader cl = new URLClassLoader(new URL[] { ... });
Class<?> cls = cl.loadClass("NotKnown");
ClassLoader cl=newurlclassloader(newurl[]{…});
类别cls=cl.loadClass(“未知”);
也就是说,如果您有一个类
foo.bar.Baz
,并且它被编译成
/someFolder/foo/bar/Baz.class
,那么您应该使用
新文件(“/someFolder”).toURI().tour()
作为从中加载类的文件夹