我一直在尝试在代码运行时通过绝对路径导入 .class,但我不知道该怎么做。
我找到了一种在项目的构建路径中导入类的方法,Class.forName();
但我需要找到一种方法来加载不在构建路径中的类。
目标是:
问题在于第三点,因为我不知道是否可以在代码运行时加载类。
我试过使用,URLClassLoader
但出现 ClassNotFound 错误。
编辑:
基本上,我有这个静态函数,它应该通过它的名字返回 Class,但是 urlClassLoader.loadClass() 抛出错误。
文件的名称是 J48.class,因此对于 className 参数,我尝试使用“J48”、“J48.class”,但都不起作用。
另外我已经尝试设置文件夹分类器来构建路径并将参数设置为“weka.classifiers.trees.J48”,这是该类的包的完整路径(包结构是weka.classifiers.trees)。
`public static Class getClassByName(String className) throws MalformedURLException, ClassNotFoundException
{
URLClassLoader urlClassLoader = URLClassLoader.newInstance(new URL[] {
new URL("file:///D:\\xampp\\htdocs\\prog-ing\\classifiers\\")
});
Class class = urlClassLoader.loadClass(className);
return class;
}`
好的,经过思考,我只得到了一个解决方案(仍然不满意),如下所示:
需要由用户上传的每个类都保存到这个项目的工作区中,因此我可以通过Class.forName();
指出上传类的这个“文件夹”来获取类,在我的例子中:Class.forName("classifiers.className");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句