0

我正在尝试使用反射从 JAR 文件中加载一个类。这个 JAR 文件有一个实现不同 JAR 文件中的接口的类。项目知道包含接口的 JAR 文件,因为它位于其构建路径中。这个 JAR 文件也在 JBoss 6 的两个文件夹中,分别是“client”和“common/lib”。

当我尝试使用类 java.net.URLClassLoader 的 loadClass 方法动态加载类以创建对象时,就会出现问题。对于项目和 JAR 文件共享的接口,将引发 ClassNotFoundException。我通过以下方法获取 ClassLoader:

public static ClassLoader getClassLoader(final String fileName) {
    final File file = new File(fileName);
    URL url;
    ClassLoader classLoader = null;
    try {
        url = file.toURL();
        final URL[] urls = new URL[]{url};
        classLoader = new URLClassLoader(urls);

    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return classLoader;
}

我必须使用这个 ClassLoader 加载该类,因为该类是 File 变量,它包含对 JAR 的引用,而该 JAR 不在 JBoss 中。

我是否必须将带有接口的 JAR 包含在 JBoss 的不同文件夹中?

4

1 回答 1

0

您只能引用 Jboss 类路径中的类。因此,如果 jboss 未加载 jar,则无法加载它。

于 2012-07-22T13:59:43.717 回答