-2

コンパイル中に不明なクラスを初期化したい(まだ既知のインターフェースを実装している)。

だから私はこのようなものを試しました:

Class<?> cls = class.foreName("NotKnown",true,ClassLoader.getSystemClassLoader());

Eclipseで機能しましたが、実行可能なjarファイルとして、classPathの外にあるクラスをロードしないため、これは機能しないことがわかりました。

どうすればそれを機能させることができますか?

4

1 に答える 1

0

新しいクラスが配置されているフォルダーからクラスをロードする新しいクラスローダーを作成する必要があります。

ClassLoader cl = new URLClassLoader(new URL[] { ... });
Class<?> cls = cl.loadClass("NotKnown");

つまり、クラスがfoo.bar.Bazあり、それがにコンパイルされている場合は、クラスをロードするためのフォルダーとして/someFolder/foo/bar/Baz.class使用する必要があります。new File("/someFolder").toURI().toURL()

于 2012-11-28T12:25:56.603 に答える