在运行时将文件夹添加到java类路径

时间:2014-08-07 20:42:08

标签: java classloader

我想使用 class.forName 从其他项目加载一个类(包含在jar文件中)。我在stackoverflow中找到了下面的代码片段。如果我知道Jar文件的名称,它可以正常工作。

File f = new File("D:/workspace/secondproject/lib/temp.jar");
            URI u = f.toURI();
            URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
            Class<URLClassLoader> urlClass = URLClassLoader.class;
            Method method = urlClass.getDeclaredMethod("addURL", new Class[]{URL.class});
            method.setAccessible(true);
            method.invoke(urlClassLoader, new Object[]{u.toURL()});
            try {
              Class.forName ("pk1.foo");
            }
            catch (Exception ex) {
               System.out.println ("Failed.");
            }

但是,当我传递包含jar文件的文件夹的地址而不是jar文件的地址时,代码不起作用。在上面的示例中 D:/ workspace / secondproject / lib

我不知道它为什么不起作用。我希望当我传递一个文件夹时,它会搜索此目录中的所有文件。请让我知道我做错了什么,如何在运行时将文件夹传递给classPath。

1 个答案:

答案 0 :(得分:0)

简单地说:它不会那样工作。

您必须遍历文件夹中的文件并添加它们。