我想初始化一个在编译期间未知的类(但是实现了一个已知的接口)。
所以我尝试过这样的事情:
Class<?> cls = class.foreName("NotKnown",true,ClassLoader.getSystemClassLoader());
它在Eclipse中工作,但作为一个可运行的jar文件,我发现这不起作用,因为它不会加载一个不在classPath中的类。
我怎样才能让它发挥作用?
答案 0 :(得分:0)
您需要创建新的类加载器,以便从新类所在的文件夹中加载类:
ClassLoader cl = new URLClassLoader(new URL[] { ... });
Class<?> cls = cl.loadClass("NotKnown");
即。如果您有一个课程foo.bar.Baz
且已编译为/someFolder/foo/bar/Baz.class
,则应使用new File("/someFolder").toURI().toURL()
作为文件夹来加载您的课程。