通过绝对路径在Java中导入类

瓦奥

我一直在尝试在代码运行时通过绝对路径导入 .class,但我不知道该怎么做。

我找到了一种在项目的构建路径中导入类的方法,Class.forName();但我需要找到一种方法来加载不在构建路径中的类。

目标是:

  1. 用户可以上传自己的 .class 文件,然后在本地保存到特定文件夹,路径保存在数据库中
  2. 通过 GUI 用户可以选择这个文件在代码运行时使用
  3. 我的代码应该在代码运行时通过这个给定的绝对路径加载一个类

问题在于第三点,因为我不知道是否可以在代码运行时加载类。

我试过使用,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章