URLClassLoader を使用して実行時にファイルからクラスをロードする場合:
ClassLoader classLoader = new URLClassLoader(new URL[] { classesUrl }, getClass().getClassLoader());
String name = fileName.replace("\\", ".").replace("/", ".").substring(0, s.lastIndexOf("."));
System.out.println("loading class " + name);
Class c = classLoader.loadClass(name);
System.out.println("loaded " + c.getCanonicalName()); // 1
これはうまくいくようです - 出力 at 1
is loaded com.robert.test.NumberUtil
.
次に、を使用してそのクラスのインスタンスを作成しようとすると
Class.forName("com.robert.test.NumberUtil");
を取得しClassNotFoundException: com.robert.test.NumberTest
ます。私がやろうとしていることは可能ですか?または、クラス at を使用する必要がありますか1
(つまり、返されたオブジェクトを使用classLoader.loadClass()
し、スコープ外になったら再ロードしますか?)。