0

リフレクションを使用して JAR ファイルからクラスをロードしようとしています。この JAR ファイルには、別の JAR ファイルにあるインターフェースを実装するクラスがあります。インターフェイスを含む JAR ファイルは、プロジェクトのビルド パスにあるため、プロジェクトによって認識されます。この JAR ファイルは、JBoss 6 の 2 つのフォルダー (「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 を使用してクラスをロードする必要があります。これは、クラスが JBoss にはない JAR への参照を含む File 変数であるためです。

JBoss の別のフォルダーに JAR をインターフェースとともに含める必要がありますか?

4

1 に答える 1

0

Jboss クラスパスにあるクラスのみを参照できます。そのため、jar が jboss によってロードされない場合、それをロードする方法はありません。

于 2012-07-22T13:59:43.717 に答える